From 2f3db5adc026d07182a3021f376c6063119e50d5 Mon Sep 17 00:00:00 2001 From: devthejo Date: Sun, 4 May 2025 13:06:51 +0200 Subject: [PATCH] chore: add loglevel debug helpers --- src/lib/logger/config.js | 9 +++++++ src/lib/logger/index.js | 2 +- src/scenes/Developer/index.js | 50 ++++++++++++++++++++++++++++++++++- 3 files changed, 59 insertions(+), 2 deletions(-) diff --git a/src/lib/logger/config.js b/src/lib/logger/config.js index dc41ae8..2ed904d 100644 --- a/src/lib/logger/config.js +++ b/src/lib/logger/config.js @@ -31,3 +31,12 @@ export const LOG_LEVEL_PRIORITY = { [LOG_LEVELS.WARN]: 2, [LOG_LEVELS.ERROR]: 3, }; + +// Function to update the minimum log level +export const setMinLogLevel = (level) => { + if (LOG_LEVELS[level] || Object.values(LOG_LEVELS).includes(level)) { + config.minLevel = level; + return true; + } + return false; +}; diff --git a/src/lib/logger/index.js b/src/lib/logger/index.js index 6617469..4546597 100644 --- a/src/lib/logger/index.js +++ b/src/lib/logger/index.js @@ -93,4 +93,4 @@ export const logger = new Logger(); export const createLogger = (scopes) => logger.withScopes(scopes); // Export types and config for external use -export { LOG_LEVELS } from "./config"; +export { LOG_LEVELS, setMinLogLevel } from "./config"; diff --git a/src/scenes/Developer/index.js b/src/scenes/Developer/index.js index 1737f87..992d57f 100644 --- a/src/scenes/Developer/index.js +++ b/src/scenes/Developer/index.js @@ -9,6 +9,7 @@ import { Text, useTheme, Divider, + RadioButton, } from "react-native-paper"; import { createStyles } from "~/theme"; import env, { setStaging } from "~/env"; @@ -18,6 +19,8 @@ import { toggleEmulatorMode as toggleEmulatorModeService, initEmulatorMode, } from "~/location/emulatorService"; +import { LOG_LEVELS, setMinLogLevel } from "~/lib/logger"; +import { config as loggerConfig } from "~/lib/logger/config"; const reset = async () => { await authActions.logout(); @@ -40,16 +43,26 @@ export default function Developer() { const [emulatorMode, setEmulatorMode] = useState(false); const [syncStatus, setSyncStatus] = useState(null); // null, 'syncing', 'success', 'error' const [syncResult, setSyncResult] = useState(""); + const [logLevel, setLogLevel] = useState(LOG_LEVELS.DEBUG); - // Initialize emulator mode when component mounts + // Initialize emulator mode and log level when component mounts useEffect(() => { // Initialize the emulator service initEmulatorMode(); // Set the initial state based on the global service setEmulatorMode(getEmulatorModeState()); + + // Set the initial log level from config + setLogLevel(loggerConfig.minLevel); }, []); + // Handle log level change + const handleLogLevelChange = (level) => { + setLogLevel(level); + setMinLogLevel(level); + }; + // Handle toggling emulator mode const handleEmulatorModeToggle = async (enabled) => { const newState = await toggleEmulatorModeService(enabled); @@ -159,6 +172,33 @@ export default function Developer() { +
+ + Log Level + + + + + DEBUG + + + + INFO + + + + WARN + + + + ERROR + + +
+
@@ -339,4 +379,12 @@ const useStyles = createStyles(({ wp, hp, scaleText, theme: { colors } }) => ({ flex: 1, flexWrap: "wrap", }, + radioRow: { + flexDirection: "row", + alignItems: "center", + marginVertical: 2, + }, + sectionLabel: { + marginBottom: 8, + }, }));