feat(logging): add runtime log levels and debug log export (#241)

Add a System setting for Off/Normal/Debug logging, apply readable local timestamps to backend logs, and enable exporting buffered runtime logs to a file when debug mode is active.

Co-authored-by: Maxim Isaev <im@friclub.ru>
This commit is contained in:
Frank Stellmacher
2026-04-21 12:12:54 +02:00
committed by GitHub
parent fa21379dbb
commit 3b3833007b
16 changed files with 453 additions and 170 deletions
+8
View File
@@ -682,6 +682,14 @@ export const deTranslation = {
shortcutNativeFullscreen: 'Nativer Vollbildmodus',
shortcutOpenMiniPlayer: 'Mini-Player öffnen',
tabSystem: 'System',
loggingTitle: 'Protokollierung',
loggingModeDesc: 'Steuert die Ausführlichkeit der Backend-Protokolle im Terminal.',
loggingModeOff: 'Aus',
loggingModeNormal: 'Normal',
loggingModeDebug: 'Debug',
loggingExport: 'Protokolle exportieren',
loggingExportSuccess: 'Protokolle exportiert ({{count}} Zeilen).',
loggingExportError: 'Protokolle konnten nicht exportiert werden.',
tabGeneral: 'Allgemein',
ratingsSectionTitle: 'Bewertungen',
ratingsSkipStarTitle: 'Skip → 1 Stern',
+8
View File
@@ -666,6 +666,14 @@ export const enTranslation = {
tabServer: 'Server',
tabUsers: 'Users',
tabSystem: 'System',
loggingTitle: 'Logging',
loggingModeDesc: 'Controls backend log verbosity in the terminal.',
loggingModeOff: 'Off',
loggingModeNormal: 'Normal',
loggingModeDebug: 'Debug',
loggingExport: 'Export logs',
loggingExportSuccess: 'Logs exported ({{count}} lines).',
loggingExportError: 'Could not export logs.',
tabGeneral: 'General',
ratingsSectionTitle: 'Ratings',
ratingsSkipStarTitle: 'Skip for 1 star',
+8
View File
@@ -657,6 +657,14 @@ export const esTranslation = {
tabServer: 'Servidor',
tabUsers: 'Usuarios',
tabSystem: 'Sistema',
loggingTitle: 'Registro',
loggingModeDesc: 'Controla la verbosidad de los logs del backend en la terminal.',
loggingModeOff: 'Apagado',
loggingModeNormal: 'Normal',
loggingModeDebug: 'Depuración',
loggingExport: 'Exportar logs',
loggingExportSuccess: 'Logs exportados ({{count}} líneas).',
loggingExportError: 'No se pudieron exportar los logs.',
tabGeneral: 'General',
ratingsSectionTitle: 'Calificaciones',
ratingsSkipStarTitle: 'Saltar para 1 estrella',
+8
View File
@@ -670,6 +670,14 @@ export const frTranslation = {
shortcutNativeFullscreen: 'Plein écran natif',
shortcutOpenMiniPlayer: 'Ouvrir le mini-lecteur',
tabSystem: 'Système',
loggingTitle: 'Journalisation',
loggingModeDesc: 'Contrôle le niveau de verbosité des journaux backend dans le terminal.',
loggingModeOff: 'Désactivé',
loggingModeNormal: 'Normal',
loggingModeDebug: 'Débogage',
loggingExport: 'Exporter les journaux',
loggingExportSuccess: 'Journaux exportés ({{count}} lignes).',
loggingExportError: 'Impossible d\'exporter les journaux.',
tabGeneral: 'Général',
ratingsSectionTitle: 'Notes',
ratingsSkipStarTitle: 'Passer pour 1 étoile',
+8
View File
@@ -651,6 +651,14 @@ export const nbTranslation = {
tabServer: 'Tjener',
tabUsers: 'Brukere',
tabSystem: 'System',
loggingTitle: 'Loggføring',
loggingModeDesc: 'Styrer hvor detaljert backend-loggene i terminalen er.',
loggingModeOff: 'Av',
loggingModeNormal: 'Normal',
loggingModeDebug: 'Debug',
loggingExport: 'Eksporter logger',
loggingExportSuccess: 'Logger eksportert ({{count}} linjer).',
loggingExportError: 'Kunne ikke eksportere logger.',
tabGeneral: 'Generelt',
ratingsSectionTitle: 'Vurderinger',
ratingsSkipStarTitle: 'Hopp for 1 stjerne',
+8
View File
@@ -669,6 +669,14 @@ export const nlTranslation = {
shortcutNativeFullscreen: 'Systeemvolledig scherm',
shortcutOpenMiniPlayer: 'Mini-speler openen',
tabSystem: 'Systeem',
loggingTitle: 'Logboek',
loggingModeDesc: 'Bepaalt de uitgebreidheid van backendlogs in de terminal.',
loggingModeOff: 'Uit',
loggingModeNormal: 'Normaal',
loggingModeDebug: 'Debug',
loggingExport: 'Logs exporteren',
loggingExportSuccess: 'Logs geëxporteerd ({{count}} regels).',
loggingExportError: 'Kon logs niet exporteren.',
tabGeneral: 'Algemeen',
ratingsSectionTitle: 'Beoordelingen',
ratingsSkipStarTitle: 'Overslaan voor 1 ster',
+8
View File
@@ -679,6 +679,14 @@ export const ruTranslation = {
tabServer: 'Сервер',
tabUsers: 'Пользователи',
tabSystem: 'Система',
loggingTitle: 'Логирование',
loggingModeDesc: 'Управляет подробностью логов backend в терминале.',
loggingModeOff: 'Выключено',
loggingModeNormal: 'Обычное',
loggingModeDebug: 'Дебаг',
loggingExport: 'Экспорт логов',
loggingExportSuccess: 'Логи экспортированы ({{count}} строк).',
loggingExportError: 'Не удалось экспортировать логи.',
tabGeneral: 'Общие',
ratingsSectionTitle: 'Рейтинги',
ratingsSkipStarTitle: 'Скипнуть для 1 звезды',
+8
View File
@@ -647,6 +647,14 @@ export const zhTranslation = {
tabServer: '服务器',
tabUsers: '用户',
tabSystem: '系统',
loggingTitle: '日志记录',
loggingModeDesc: '控制终端中后端日志的详细程度。',
loggingModeOff: '关闭',
loggingModeNormal: '普通',
loggingModeDebug: '调试',
loggingExport: '导出日志',
loggingExportSuccess: '日志已导出({{count}} 行)。',
loggingExportError: '无法导出日志。',
tabGeneral: '通用',
ratingsSectionTitle: '评分',
ratingsSkipStarTitle: '跳过以评 1 星',