feat(app): App-Logs live im Settings → Protokoll → Live Logs Tab anzeigen
Stefan: "wir haben live log + events tab in protokoll einstellungen, da ist aber nie was drin". Bisher hoerten Live Logs / Events nur auf RVS-Messages type='log'/'event' von der Bridge — die Bridge schickt aktuell aber keine solchen Messages zurueck zur App. Plus: reportAppDebug/Error ging nur an die Bridge in /shared/logs/app.log, lokal in der App war nichts sichtbar. Loesung: lokaler DeviceEventEmitter-Bus. logger.ts: - APP_LOG_EVENT Konstante exportiert - reportAppError + reportAppDebug emittieren ZUSAETZLICH zum RVS-Send ein lokales DeviceEventEmitter-Event (errors immer, debug nur wenn Toggle AN) SettingsScreen.tsx: - DeviceEventEmitter.addListener auf APP_LOG_EVENT - Mappt Log-Entries 1:1 in den 'logs'-State (max 200) - Cleanup in useEffect-return Damit sieht Stefan beim Debuggen (Debug-Toggle AN, Live-Logs-Tab offen) live in der App was passiert — ohne curl gegen Bridge. APK neu bauen erforderlich. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -20,6 +20,7 @@ import {
|
||||
Modal,
|
||||
PermissionsAndroid,
|
||||
useWindowDimensions,
|
||||
DeviceEventEmitter,
|
||||
} from 'react-native';
|
||||
import AsyncStorage from '@react-native-async-storage/async-storage';
|
||||
import RNFS from 'react-native-fs';
|
||||
@@ -62,7 +63,7 @@ import MemoryBrowser from '../components/MemoryBrowser';
|
||||
import TriggerBrowser from '../components/TriggerBrowser';
|
||||
import SkillBrowser from '../components/SkillBrowser';
|
||||
import OAuthBrowser from '../components/OAuthBrowser';
|
||||
import { isVerboseLogging, setVerboseLogging, isDebugLogsToBridge, setDebugLogsToBridge } from '../services/logger';
|
||||
import { isVerboseLogging, setVerboseLogging, isDebugLogsToBridge, setDebugLogsToBridge, APP_LOG_EVENT } from '../services/logger';
|
||||
import {
|
||||
isWakeReadySoundEnabled,
|
||||
setWakeReadySoundEnabled,
|
||||
@@ -388,6 +389,19 @@ const SettingsScreen: React.FC = () => {
|
||||
setConnLog(prev => [...prev.slice(-99), entry]);
|
||||
});
|
||||
|
||||
// Lokale App-Logs (reportAppDebug/Error) im Live-Logs-Tab anzeigen
|
||||
// — damit Stefan ohne curl direkt in der App sieht was passiert.
|
||||
const localLogSub = DeviceEventEmitter.addListener(APP_LOG_EVENT, (e: any) => {
|
||||
const entry: LogEntry = {
|
||||
id: `applog_${e.ts || Date.now()}_${logIdCounter++}`,
|
||||
timestamp: e.ts || Date.now(),
|
||||
source: e.scope || 'app',
|
||||
message: e.message || '',
|
||||
level: e.level || 'info',
|
||||
};
|
||||
setLogs(prev => [...prev.slice(-200), entry]);
|
||||
});
|
||||
|
||||
const unsubMessage = rvs.onMessage((message: RVSMessage) => {
|
||||
if (message.type === 'log') {
|
||||
const entry: LogEntry = {
|
||||
@@ -523,6 +537,7 @@ const SettingsScreen: React.FC = () => {
|
||||
unsubState();
|
||||
unsubMessage();
|
||||
unsubLog();
|
||||
localLogSub.remove();
|
||||
};
|
||||
}, []);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user