diff --git a/lib/core/chan.dart b/lib/core/chan.dart index 274e16bb..c8566eeb 100644 --- a/lib/core/chan.dart +++ b/lib/core/chan.dart @@ -35,8 +35,8 @@ abstract final class MethodChans { try { Loggers.app.info('Updating Android sessions: $payload'); await _channel.invokeMethod('updateSessions', payload); - } catch (_) { - // ignore + } catch (e, s) { + Loggers.app.warning('Failed to update Android sessions', e, s); } } @@ -46,7 +46,8 @@ abstract final class MethodChans { try { final res = await _channel.invokeMethod('isServiceRunning'); return res == true; - } catch (_) { + } catch (e, s) { + Loggers.app.warning('Failed to check if Android service is running', e, s); return false; } } @@ -57,7 +58,9 @@ abstract final class MethodChans { try { Loggers.app.info('Starting iOS Live Activity: $payload'); await _channel.invokeMethod('startLiveActivity', payload); - } catch (_) {} + } catch (e, s) { + Loggers.app.warning('Failed to start iOS Live Activity', e, s); + } } static Future updateLiveActivity(String payload) async { @@ -65,7 +68,9 @@ abstract final class MethodChans { try { Loggers.app.info('Updating iOS Live Activity: $payload'); await _channel.invokeMethod('updateLiveActivity', payload); - } catch (_) {} + } catch (e, s) { + Loggers.app.warning('Failed to update iOS Live Activity', e, s); + } } static Future stopLiveActivity() async { @@ -73,7 +78,9 @@ abstract final class MethodChans { try { Loggers.app.info('Stopping iOS Live Activity'); await _channel.invokeMethod('stopLiveActivity'); - } catch (_) {} + } catch (e, s) { + Loggers.app.warning('Failed to stop iOS Live Activity', e, s); + } } /// Register a handler for native -> Flutter callbacks. diff --git a/lib/core/service/ssh_discovery.dart b/lib/core/service/ssh_discovery.dart index 1a6d9539..dcc24ce3 100644 --- a/lib/core/service/ssh_discovery.dart +++ b/lib/core/service/ssh_discovery.dart @@ -74,7 +74,8 @@ class SshDiscoveryService { // Some tools return non-zero but still have useful output if (out.trim().isNotEmpty) return out; return null; - } catch (_) { + } catch (e, s) { + Loggers.app.warning('Failed to run command: $exe ${args.join(' ')}', e, s); return null; } } @@ -109,7 +110,7 @@ class SshDiscoveryService { } } if (matchCount == 0) { - lprint( + Loggers.app.warning( '[ssh_discovery] Warning: No ARP entries parsed on macOS. Output may be unexpected or localized. Output sample: ${s.length > 100 ? '${s.substring(0, 100)}...' : s}', ); } @@ -176,8 +177,7 @@ class SshDiscoveryService { r'inet\s+(\d+\.\d+\.\d+\.\d+)\s+netmask\s+0x([0-9a-fA-F]+)(?:\s+broadcast\s+(\d+\.\d+\.\d+\.\d+))?', ).firstMatch(line); if (ipm == null) { - // Log unexpected format but continue processing other lines - lprint('[ssh_discovery] Warning: Unexpected ifconfig line format: $line'); + Loggers.app.warning('[ssh_discovery] Warning: Unexpected ifconfig line format: $line'); continue; } final ip = InternetAddress(ipm.group(1)!); @@ -190,7 +190,7 @@ class SshDiscoveryService { final brd = InternetAddress(ipm.group(3) ?? _broadcastAddress(ip, mask).address); res.add(_Cidr(ip, prefix, mask, net, brd)); } catch (e) { - lprint('[ssh_discovery] Error parsing ifconfig output: $e, line: $line'); + Loggers.app.warning('[ssh_discovery] Error parsing ifconfig output: $e, line: $line'); continue; } } @@ -249,7 +249,9 @@ class SshDiscoveryService { } } } - } catch (_) {} + } catch (e, s) { + Loggers.app.warning('Failed to discover mDNS SSH candidates on macOS', e, s); + } } else if (_isLinux) { final s = await _run('/usr/bin/avahi-browse', ['-rat', '_ssh._tcp']); if (s != null) { @@ -335,7 +337,8 @@ class _Scanner { ); final banner = await c.future.timeout(timeout, onTimeout: () => null); return _ScanResult(ip, banner); - } catch (_) { + } catch (e, s) { + Loggers.app.warning('Failed to probe SSH at ${ip.address}', e, s); return null; } finally { sub?.cancel(); diff --git a/lib/core/sync.dart b/lib/core/sync.dart index ab0c6268..b8985271 100644 --- a/lib/core/sync.dart +++ b/lib/core/sync.dart @@ -26,7 +26,8 @@ final class BakSyncer extends SyncIface { return MergeableUtils.fromJsonString(content, pwd).$1; } return MergeableUtils.fromJsonString(content).$1; - } catch (_) { + } catch (e, s) { + Loggers.app.warning('Failed to parse backup file with password, trying without password', e, s); // Fallback: try without password if detection failed return MergeableUtils.fromJsonString(content).$1; } diff --git a/lib/data/model/app/bak/backup_service.dart b/lib/data/model/app/bak/backup_service.dart index 396ff5f5..eff921dc 100644 --- a/lib/data/model/app/bak/backup_service.dart +++ b/lib/data/model/app/bak/backup_service.dart @@ -74,8 +74,8 @@ class BackupService { await _confirmAndRestore(context, backup); return; } - } catch (e) { - // Saved password failed, will prompt for manual input + } catch (e, s) { + Loggers.app.warning('Failed to restore with saved password, will prompt for manual input', e, s); } } diff --git a/lib/data/model/server/net_speed.dart b/lib/data/model/server/net_speed.dart index 854e5ce8..624a1be4 100644 --- a/lib/data/model/server/net_speed.dart +++ b/lib/data/model/server/net_speed.dart @@ -164,7 +164,8 @@ class NetSpeed extends TimeSeq { final bytesIn = BigInt.parse(bytes.first); final bytesOut = BigInt.parse(bytes[8]); results.add(NetSpeedPart(device, bytesIn, bytesOut, time)); - } catch (_) { + } catch (e, s) { + Loggers.app.warning('Failed to parse net speed data: $item', e, s); continue; } } diff --git a/lib/data/model/server/server_status_update_req.dart b/lib/data/model/server/server_status_update_req.dart index 036c71d5..367feca9 100644 --- a/lib/data/model/server/server_status_update_req.dart +++ b/lib/data/model/server/server_status_update_req.dart @@ -679,7 +679,7 @@ void _parseWindowsTemperatures(Temperatures temps, String raw) { if (typeLines.isNotEmpty && valueLines.isNotEmpty) { temps.parse(typeLines.join('\n'), valueLines.join('\n')); } - } catch (e) { - // If JSON parsing fails, ignore temperature data + } catch (e, s) { + Loggers.app.warning('Failed to parse Windows temperature data', e, s); } } diff --git a/lib/data/model/sftp/req.dart b/lib/data/model/sftp/req.dart index aafe2155..64c1f798 100644 --- a/lib/data/model/sftp/req.dart +++ b/lib/data/model/sftp/req.dart @@ -21,7 +21,8 @@ class SftpReq { } try { knownHostFingerprints = Map.from(Stores.setting.sshKnownHostFingerprints.get()); - } catch (_) { + } catch (e, s) { + Loggers.app.warning('Failed to load SSH known host fingerprints', e, s); knownHostFingerprints = null; } } diff --git a/lib/data/provider/pve.dart b/lib/data/provider/pve.dart index a6eddebd..746fc998 100644 --- a/lib/data/provider/pve.dart +++ b/lib/data/provider/pve.dart @@ -6,7 +6,6 @@ import 'package:dartssh2/dartssh2.dart'; import 'package:dio/dio.dart'; import 'package:dio/io.dart'; import 'package:fl_lib/fl_lib.dart'; -import 'package:flutter/material.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:server_box/core/extension/context/locale.dart'; @@ -108,7 +107,7 @@ class PveNotifier extends _$PveNotifier { final newUrl = Uri.parse( addr, ).replace(host: 'localhost', port: _localPort).toString(); - debugPrint('Forwarding $newUrl to $addr'); + dprint('Forwarding $newUrl to $addr'); } } @@ -235,11 +234,15 @@ class PveNotifier extends _$PveNotifier { Future dispose() async { try { await _serverSocket.close(); - } catch (_) {} + } catch (e, s) { + Loggers.app.warning('Failed to close server socket', e, s); + } for (final forward in _forwards) { try { forward.close(); - } catch (_) {} + } catch (e, s) { + Loggers.app.warning('Failed to close forward', e, s); + } } } } diff --git a/lib/generated/l10n/l10n.dart b/lib/generated/l10n/l10n.dart index 9ba4b7af..072cce4e 100644 --- a/lib/generated/l10n/l10n.dart +++ b/lib/generated/l10n/l10n.dart @@ -1927,6 +1927,12 @@ abstract class AppLocalizations { /// In en, this message translates to: /// **'Help'** String get menuHelp; + + /// No description provided for @logs. + /// + /// In en, this message translates to: + /// **'Logs'** + String get logs; } class _AppLocalizationsDelegate diff --git a/lib/generated/l10n/l10n_de.dart b/lib/generated/l10n/l10n_de.dart index e8450cb5..d794efde 100644 --- a/lib/generated/l10n/l10n_de.dart +++ b/lib/generated/l10n/l10n_de.dart @@ -1028,4 +1028,7 @@ class AppLocalizationsDe extends AppLocalizations { @override String get menuHelp => 'Help'; + + @override + String get logs => 'Protokolle'; } diff --git a/lib/generated/l10n/l10n_en.dart b/lib/generated/l10n/l10n_en.dart index eeb52e30..94f6a2e8 100644 --- a/lib/generated/l10n/l10n_en.dart +++ b/lib/generated/l10n/l10n_en.dart @@ -1019,4 +1019,7 @@ class AppLocalizationsEn extends AppLocalizations { @override String get menuHelp => 'Help'; + + @override + String get logs => 'Logs'; } diff --git a/lib/generated/l10n/l10n_es.dart b/lib/generated/l10n/l10n_es.dart index 5f1d7bcc..376cd739 100644 --- a/lib/generated/l10n/l10n_es.dart +++ b/lib/generated/l10n/l10n_es.dart @@ -1030,4 +1030,7 @@ class AppLocalizationsEs extends AppLocalizations { @override String get menuHelp => 'Help'; + + @override + String get logs => 'Registros'; } diff --git a/lib/generated/l10n/l10n_fr.dart b/lib/generated/l10n/l10n_fr.dart index 99e5dba0..3e4f9a87 100644 --- a/lib/generated/l10n/l10n_fr.dart +++ b/lib/generated/l10n/l10n_fr.dart @@ -1033,4 +1033,7 @@ class AppLocalizationsFr extends AppLocalizations { @override String get menuHelp => 'Help'; + + @override + String get logs => 'Journaux'; } diff --git a/lib/generated/l10n/l10n_id.dart b/lib/generated/l10n/l10n_id.dart index a21473fd..e6406b5a 100644 --- a/lib/generated/l10n/l10n_id.dart +++ b/lib/generated/l10n/l10n_id.dart @@ -1019,4 +1019,7 @@ class AppLocalizationsId extends AppLocalizations { @override String get menuHelp => 'Help'; + + @override + String get logs => 'Log'; } diff --git a/lib/generated/l10n/l10n_ja.dart b/lib/generated/l10n/l10n_ja.dart index 43c7d33f..a70553e4 100644 --- a/lib/generated/l10n/l10n_ja.dart +++ b/lib/generated/l10n/l10n_ja.dart @@ -967,7 +967,7 @@ class AppLocalizationsJa extends AppLocalizations { @override String get writeScriptTip => - 'サーバーに接続すると、システムの状態を監視するためのスクリプトが `~/.config/server_box` \n | `/tmp/server_box` に書き込まれます。スクリプトの内容を確認できます。'; + 'サーバーへの接続後、システムステータスを監視するスクリプトが `~/.config/server_box` \n | `/tmp/server_box` に書き込まれます。スクリプトの内容を確認できます。'; @override String get menuSettings => 'Setting'; @@ -989,4 +989,7 @@ class AppLocalizationsJa extends AppLocalizations { @override String get menuHelp => 'Help'; + + @override + String get logs => 'ログ'; } diff --git a/lib/generated/l10n/l10n_nl.dart b/lib/generated/l10n/l10n_nl.dart index 70cc97c4..805df546 100644 --- a/lib/generated/l10n/l10n_nl.dart +++ b/lib/generated/l10n/l10n_nl.dart @@ -1026,4 +1026,7 @@ class AppLocalizationsNl extends AppLocalizations { @override String get menuHelp => 'Help'; + + @override + String get logs => 'Logboeken'; } diff --git a/lib/generated/l10n/l10n_pt.dart b/lib/generated/l10n/l10n_pt.dart index 694b0bf0..6079f1aa 100644 --- a/lib/generated/l10n/l10n_pt.dart +++ b/lib/generated/l10n/l10n_pt.dart @@ -1021,4 +1021,7 @@ class AppLocalizationsPt extends AppLocalizations { @override String get menuHelp => 'Help'; + + @override + String get logs => 'Logs'; } diff --git a/lib/generated/l10n/l10n_ru.dart b/lib/generated/l10n/l10n_ru.dart index a83c4d35..88aa8a32 100644 --- a/lib/generated/l10n/l10n_ru.dart +++ b/lib/generated/l10n/l10n_ru.dart @@ -1025,4 +1025,7 @@ class AppLocalizationsRu extends AppLocalizations { @override String get menuHelp => 'Help'; + + @override + String get logs => 'Журналы'; } diff --git a/lib/generated/l10n/l10n_tr.dart b/lib/generated/l10n/l10n_tr.dart index 168be4e6..71f554cb 100644 --- a/lib/generated/l10n/l10n_tr.dart +++ b/lib/generated/l10n/l10n_tr.dart @@ -1020,4 +1020,7 @@ class AppLocalizationsTr extends AppLocalizations { @override String get menuHelp => 'Help'; + + @override + String get logs => 'Günlükler'; } diff --git a/lib/generated/l10n/l10n_uk.dart b/lib/generated/l10n/l10n_uk.dart index 505564f3..935d33d0 100644 --- a/lib/generated/l10n/l10n_uk.dart +++ b/lib/generated/l10n/l10n_uk.dart @@ -1025,4 +1025,7 @@ class AppLocalizationsUk extends AppLocalizations { @override String get menuHelp => 'Help'; + + @override + String get logs => 'Журнали'; } diff --git a/lib/generated/l10n/l10n_zh.dart b/lib/generated/l10n/l10n_zh.dart index b7a848aa..1de01419 100644 --- a/lib/generated/l10n/l10n_zh.dart +++ b/lib/generated/l10n/l10n_zh.dart @@ -974,6 +974,9 @@ class AppLocalizationsZh extends AppLocalizations { @override String get menuHelp => '帮助'; + + @override + String get logs => '日志'; } /// The translations for Chinese, as used in Taiwan (`zh_TW`). @@ -1925,4 +1928,7 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get writeScriptTip => '連線到伺服器後,將會在 `~/.config/server_box` \n | `/tmp/server_box` 中寫入一個腳本來監測系統狀態。你可以審查腳本內容。'; + + @override + String get logs => '日誌'; } diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index 4d989dcf..f1f87701 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -293,5 +293,6 @@ "wolTip": "Nach der Konfiguration von WOL (Wake-on-LAN) wird jedes Mal, wenn der Server verbunden wird, eine WOL-Anfrage gesendet.", "write": "Schreiben", "writeScriptFailTip": "Das Schreiben des Skripts ist fehlgeschlagen, möglicherweise aufgrund fehlender Berechtigungen oder das Verzeichnis existiert nicht.", - "writeScriptTip": "Nach der Verbindung mit dem Server wird ein Skript in `~/.config/server_box` \n | `/tmp/server_box` geschrieben, um den Systemstatus zu überwachen. Sie können den Skriptinhalt überprüfen." + "writeScriptTip": "Nach der Verbindung mit dem Server wird ein Skript in `~/.config/server_box` \n | `/tmp/server_box` geschrieben, um den Systemstatus zu überwachen. Sie können den Skriptinhalt überprüfen.", + "logs": "Protokolle" } diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 33ea5d40..53468f37 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -303,5 +303,6 @@ "menuInfo": "Info", "menuGitHubRepository": "GitHub Repository", "menuWiki": "Wiki", - "menuHelp": "Help" + "menuHelp": "Help", + "logs": "Logs" } diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index 8aa4f0dc..0d2eb6d7 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -293,5 +293,6 @@ "wolTip": "Después de configurar WOL (Wake-on-LAN), se envía una solicitud de WOL cada vez que se conecta el servidor.", "write": "Escribir", "writeScriptFailTip": "La escritura en el script falló, posiblemente por falta de permisos o porque el directorio no existe.", - "writeScriptTip": "Después de conectarse al servidor, se escribirá un script en `~/.config/server_box` \n | `/tmp/server_box` para monitorear el estado del sistema. Puedes revisar el contenido del script." + "writeScriptTip": "Después de conectarse al servidor, se escribirá un script en `~/.config/server_box` \n | `/tmp/server_box` para monitorear el estado del sistema. Puedes revisar el contenido del script.", + "logs": "Registros" } diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb index be91ce69..8c6efe42 100644 --- a/lib/l10n/app_fr.arb +++ b/lib/l10n/app_fr.arb @@ -293,5 +293,6 @@ "wolTip": "Après avoir configuré le WOL (Wake-on-LAN), une requête WOL est envoyée chaque fois que le serveur est connecté.", "write": "Écrire", "writeScriptFailTip": "Échec de l'écriture dans le script, probablement en raison d'un manque de permissions ou que le répertoire n'existe pas.", - "writeScriptTip": "Après la connexion au serveur, un script sera écrit dans `~/.config/server_box` \n | `/tmp/server_box` pour surveiller l'état du système. Vous pouvez examiner le contenu du script." + "writeScriptTip": "Après la connexion au serveur, un script sera écrit dans `~/.config/server_box` \n | `/tmp/server_box` pour surveiller l'état du système. Vous pouvez examiner le contenu du script.", + "logs": "Journaux" } diff --git a/lib/l10n/app_id.arb b/lib/l10n/app_id.arb index 570d7536..026deffe 100644 --- a/lib/l10n/app_id.arb +++ b/lib/l10n/app_id.arb @@ -293,5 +293,6 @@ "wolTip": "Setelah mengonfigurasi WOL (Wake-on-LAN), permintaan WOL dikirim setiap kali server terhubung.", "write": "Tulis", "writeScriptFailTip": "Penulisan ke skrip gagal, mungkin karena tidak ada izin atau direktori tidak ada.", - "writeScriptTip": "Setelah terhubung ke server, sebuah skrip akan ditulis ke `~/.config/server_box` \n | `/tmp/server_box` untuk memantau status sistem. Anda dapat meninjau konten skrip tersebut." + "writeScriptTip": "Setelah terhubung ke server, sebuah skrip akan ditulis ke `~/.config/server_box` \n | `/tmp/server_box` untuk memantau status sistem. Anda dapat meninjau konten skrip tersebut.", + "logs": "Log" } diff --git a/lib/l10n/app_ja.arb b/lib/l10n/app_ja.arb index 81bdb997..ac141432 100644 --- a/lib/l10n/app_ja.arb +++ b/lib/l10n/app_ja.arb @@ -293,5 +293,6 @@ "wolTip": "WOL(Wake-on-LAN)を設定した後、サーバーに接続するたびにWOLリクエストが送信されます。", "write": "書き込み", "writeScriptFailTip": "スクリプトの書き込みに失敗しました。権限がないかディレクトリが存在しない可能性があります。", - "writeScriptTip": "サーバーに接続すると、システムの状態を監視するためのスクリプトが `~/.config/server_box` \n | `/tmp/server_box` に書き込まれます。スクリプトの内容を確認できます。" + "writeScriptTip": "サーバーへの接続後、システムステータスを監視するスクリプトが `~/.config/server_box` \n | `/tmp/server_box` に書き込まれます。スクリプトの内容を確認できます。", + "logs": "ログ" } diff --git a/lib/l10n/app_nl.arb b/lib/l10n/app_nl.arb index 068a21e0..65357272 100644 --- a/lib/l10n/app_nl.arb +++ b/lib/l10n/app_nl.arb @@ -293,5 +293,6 @@ "wolTip": "Na het configureren van WOL (Wake-on-LAN), wordt elke keer dat de server wordt verbonden een WOL-verzoek verzonden.", "write": "Schrijven", "writeScriptFailTip": "Het schrijven naar het script is mislukt, mogelijk door gebrek aan rechten of omdat de map niet bestaat.", - "writeScriptTip": "Na het verbinden met de server wordt een script geschreven naar `~/.config/server_box` \n | `/tmp/server_box` om de systeemstatus te monitoren. U kunt de inhoud van het script controleren." + "writeScriptTip": "Na het verbinden met de server wordt een script geschreven naar `~/.config/server_box` \n | `/tmp/server_box` om de systeemstatus te monitoren. U kunt de inhoud van het script controleren.", + "logs": "Logboeken" } diff --git a/lib/l10n/app_pt.arb b/lib/l10n/app_pt.arb index b58c04c6..22ff962b 100644 --- a/lib/l10n/app_pt.arb +++ b/lib/l10n/app_pt.arb @@ -293,5 +293,6 @@ "wolTip": "Após configurar o WOL (Wake-on-LAN), um pedido de WOL é enviado cada vez que o servidor é conectado.", "write": "Escrita", "writeScriptFailTip": "Falha ao escrever no script, possivelmente devido à falta de permissões ou o diretório não existe.", - "writeScriptTip": "Após conectar ao servidor, um script será escrito em `~/.config/server_box` \n | `/tmp/server_box` para monitorar o status do sistema. Você pode revisar o conteúdo do script." + "writeScriptTip": "Após conectar ao servidor, um script será escrito em `~/.config/server_box` \n | `/tmp/server_box` para monitorar o status do sistema. Você pode revisar o conteúdo do script.", + "logs": "Logs" } diff --git a/lib/l10n/app_ru.arb b/lib/l10n/app_ru.arb index cc3c8f45..acb3b6e8 100644 --- a/lib/l10n/app_ru.arb +++ b/lib/l10n/app_ru.arb @@ -293,5 +293,6 @@ "wolTip": "После настройки WOL (Wake-on-LAN) при каждом подключении к серверу отправляется запрос WOL.", "write": "Запись", "writeScriptFailTip": "Запись скрипта не удалась, возможно, из-за отсутствия прав или потому что, директории не существует.", - "writeScriptTip": "После подключения к серверу скрипт будет записан в `~/.config/server_box` \n | `/tmp/server_box` для мониторинга состояния системы. Вы можете проверить содержимое скрипта." + "writeScriptTip": "После подключения к серверу скрипт будет записан в `~/.config/server_box` \n | `/tmp/server_box` для мониторинга состояния системы. Вы можете проверить содержимое скрипта.", + "logs": "Журналы" } diff --git a/lib/l10n/app_tr.arb b/lib/l10n/app_tr.arb index 4b56f069..8bb4d6d0 100644 --- a/lib/l10n/app_tr.arb +++ b/lib/l10n/app_tr.arb @@ -293,5 +293,6 @@ "wolTip": "WOL (Wake-on-LAN) yapılandırıldıktan sonra, sunucuya her bağlanıldığında bir WOL isteği gönderilir.", "write": "Yaz", "writeScriptFailTip": "Betik yazma başarısız oldu, muhtemelen izin eksikliği veya dizin mevcut değil.", - "writeScriptTip": "Sunucuya bağlandıktan sonra, sistem durumunu izlemek için `~/.config/server_box` \n | `/tmp/server_box` dizinine bir betik yazılacak. Betik içeriğini inceleyebilirsiniz." + "writeScriptTip": "Sunucuya bağlandıktan sonra, sistem durumunu izlemek için `~/.config/server_box` \n | `/tmp/server_box` dizinine bir betik yazılacak. Betik içeriğini inceleyebilirsiniz.", + "logs": "Günlükler" } diff --git a/lib/l10n/app_uk.arb b/lib/l10n/app_uk.arb index 2117c02a..2a1807c2 100644 --- a/lib/l10n/app_uk.arb +++ b/lib/l10n/app_uk.arb @@ -293,5 +293,6 @@ "wolTip": "Після налаштування WOL (Wake-on-LAN), при кожному підключенні до сервера відправляється запит WOL.", "write": "Записати", "writeScriptFailTip": "Запис у скрипт не вдався, можливо, через брак дозволів або каталог не існує.", - "writeScriptTip": "Після підключення до сервера скрипт буде записано у `~/.config/server_box` \n | `/tmp/server_box` для моніторингу стану системи. Ви можете переглянути вміст скрипта." + "writeScriptTip": "Після підключення до сервера скрипт буде записано у `~/.config/server_box` \n | `/tmp/server_box` для моніторингу стану системи. Ви можете переглянути вміст скрипта.", + "logs": "Журнали" } diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index c593561e..bb6d4243 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -300,5 +300,6 @@ "menuInfo": "信息", "menuGitHubRepository": "GitHub 仓库", "menuWiki": "Wiki", - "menuHelp": "帮助" + "menuHelp": "帮助", + "logs": "日志" } diff --git a/lib/l10n/app_zh_tw.arb b/lib/l10n/app_zh_tw.arb index 21ccd82a..c1ea6c36 100644 --- a/lib/l10n/app_zh_tw.arb +++ b/lib/l10n/app_zh_tw.arb @@ -293,5 +293,6 @@ "wolTip": "設定 WOL 後,每次連線伺服器時將自動發送喚醒請求", "write": "寫入", "writeScriptFailTip": "寫入腳本失敗,可能是沒有權限/目錄不存在等。", - "writeScriptTip": "連線到伺服器後,將會在 `~/.config/server_box` \n | `/tmp/server_box` 中寫入一個腳本來監測系統狀態。你可以審查腳本內容。" + "writeScriptTip": "連線到伺服器後,將會在 `~/.config/server_box` \n | `/tmp/server_box` 中寫入一個腳本來監測系統狀態。你可以審查腳本內容。", + "logs": "日誌" } diff --git a/lib/main.dart b/lib/main.dart index 3d51bf41..e45a6e0d 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -70,7 +70,6 @@ void _setupDebug() { Logger.root.level = Level.ALL; Logger.root.onRecord.listen((record) { DebugProvider.addLog(record); - lprint(record); if (record.error != null) print(record.error); if (record.stackTrace != null) print(record.stackTrace); }); diff --git a/lib/view/page/setting/entry.dart b/lib/view/page/setting/entry.dart index a370f0b7..18912d5f 100644 --- a/lib/view/page/setting/entry.dart +++ b/lib/view/page/setting/entry.dart @@ -71,9 +71,9 @@ class _SettingsPageState extends ConsumerState with SingleTickerPr ), actions: [ Btn.text( - text: 'Logs', + text: context.l10n.logs, onTap: () => - DebugPage.route.go(context, args: const DebugPageArgs(title: 'Logs(${BuildData.build})')), + DebugPage.route.go(context, args: DebugPageArgs(title: '${context.l10n.logs}(${BuildData.build})')), ), Btn.icon( icon: const Icon(Icons.delete),