🔍 Diagnose: Ping-Fehler mit vollen Details loggen
Bisher stand im Log nur die nackte Exception-Message ("Connection timeout")
— ohne URL und ohne Fehlertyp war die Ursache nicht eingrenzbar.
Neu im Fehler-Log:
- Fehlerart klassifiziert: TIMEOUT / SOCKET / TLS-HANDSHAKE / HTTP / FORMAT
- SocketException zusätzlich mit osError-Message, errorCode, Adresse und
Adress-Typ (IPv4 vs IPv6 — zeigt ein IPv6-Problem direkt an)
- Server-URL sowie geparstes scheme/host/port (falsche URL, fehlendes
https, DNS-Auflösung erkennbar)
- e.runtimeType + Message
Bewusst NICHT geloggt: die volle Ping-URI — sie enthält Auth-Token und
Salt als Query-Parameter, die nicht auf dem Log-Server landen sollen.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XJzQjUtnvYUtHdnTs3iCru
This commit is contained in:
co-authored by
Claude Haiku 4.5
parent
91fbe3dd6e
commit
db0152e3fa
@@ -1,4 +1,6 @@
|
|||||||
|
import 'dart:async';
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
import 'dart:io';
|
||||||
import 'dart:math';
|
import 'dart:math';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:crypto/crypto.dart';
|
import 'package:crypto/crypto.dart';
|
||||||
@@ -148,8 +150,31 @@ class NavidromeService {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logger.error('Navidrome Ping Fehler', e, StackTrace.current);
|
// Details für die Diagnose: ohne URL/Exception-Typ ist im Log nicht
|
||||||
debugPrint('Navidrome Ping Fehler: $e');
|
// erkennbar, ob DNS, IPv6, TLS oder eine falsche URL die Ursache ist.
|
||||||
|
// Bewusst NICHT die volle Ping-URI loggen — die enthält Token + Salt.
|
||||||
|
final ziel = Uri.tryParse(_serverUrl);
|
||||||
|
final art = switch (e) {
|
||||||
|
TimeoutException() => 'TIMEOUT (10s überschritten)',
|
||||||
|
SocketException(:final osError, :final address) =>
|
||||||
|
'SOCKET (os=${osError?.message ?? '-'} code=${osError?.errorCode ?? '-'} '
|
||||||
|
'addr=${address?.address ?? '-'} typ=${address?.type.name ?? '-'})',
|
||||||
|
HandshakeException() => 'TLS-HANDSHAKE',
|
||||||
|
HttpException() => 'HTTP',
|
||||||
|
FormatException() => 'FORMAT (URL unparsbar?)',
|
||||||
|
_ => 'SONSTIGE',
|
||||||
|
};
|
||||||
|
logger.error(
|
||||||
|
'Navidrome Ping Fehler [$art] '
|
||||||
|
'url=$_serverUrl '
|
||||||
|
'scheme=${ziel?.scheme ?? '-'} host=${ziel?.host ?? '-'} '
|
||||||
|
'port=${ziel?.hasPort == true ? ziel?.port : '(default)'} '
|
||||||
|
'typ=${e.runtimeType} '
|
||||||
|
'msg=$e',
|
||||||
|
e,
|
||||||
|
StackTrace.current,
|
||||||
|
);
|
||||||
|
debugPrint('Navidrome Ping Fehler [$art] $_serverUrl: $e');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user