From bbee4b57916d79fba0dbc25a57036d3544c48a45 Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Wed, 28 Jun 2023 20:26:15 -0400 Subject: [PATCH] Add control to enable debug logging in production --- app/actions/definitions/developer.tsx | 22 +++++++++++++++++----- app/utils/Logger.ts | 7 ++++++- shared/i18n/locales/en_US/translation.json | 5 ++++- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/app/actions/definitions/developer.tsx b/app/actions/definitions/developer.tsx index 0d8dff773..b030f573f 100644 --- a/app/actions/definitions/developer.tsx +++ b/app/actions/definitions/developer.tsx @@ -5,6 +5,7 @@ import { createAction } from "~/actions"; import { DeveloperSection } from "~/actions/sections"; import env from "~/env"; import { client } from "~/utils/ApiClient"; +import Logger from "~/utils/Logger"; import { deleteAllDatabases } from "~/utils/developer"; export const clearIndexedDB = createAction({ @@ -35,16 +36,27 @@ export const createTestUsers = createAction({ }, }); +export const toggleDebugLogging = createAction({ + name: ({ t }) => t("Toggle debug logging"), + icon: , + section: DeveloperSection, + perform: async ({ t }) => { + Logger.debugLoggingEnabled = !Logger.debugLoggingEnabled; + stores.toasts.showToast( + Logger.debugLoggingEnabled + ? t("Debug logging enabled") + : t("Debug logging disabled") + ); + }, +}); + export const developer = createAction({ - name: ({ t }) => t("Developer"), + name: ({ t }) => t("Development"), keywords: "debug", icon: , iconInContextMenu: false, section: DeveloperSection, - visible: ({ event }) => - env.ENVIRONMENT === "development" || - (event instanceof KeyboardEvent && event.altKey), - children: [clearIndexedDB, createTestUsers], + children: [clearIndexedDB, toggleDebugLogging, createTestUsers], }); export const rootDeveloperActions = [developer]; diff --git a/app/utils/Logger.ts b/app/utils/Logger.ts index fc4991929..ef371ff37 100644 --- a/app/utils/Logger.ts +++ b/app/utils/Logger.ts @@ -30,7 +30,7 @@ class Logger { * @param extra Arbitrary data to be logged */ debug(label: LogCategory, message: string, extra?: Extra) { - if (env.ENVIRONMENT === "development") { + if (env.ENVIRONMENT === "development" || this.debugLoggingEnabled) { console.debug(`[${label}] ${message}`, extra); } } @@ -82,6 +82,11 @@ class Logger { extra, }); } + + /** + * Whether additional debug logging is shown in the console or not. + */ + public debugLoggingEnabled = false; } export default new Logger(); diff --git a/shared/i18n/locales/en_US/translation.json b/shared/i18n/locales/en_US/translation.json index 007796dee..fa494896d 100644 --- a/shared/i18n/locales/en_US/translation.json +++ b/shared/i18n/locales/en_US/translation.json @@ -12,7 +12,10 @@ "Delete collection": "Delete collection", "Delete IndexedDB cache": "Delete IndexedDB cache", "IndexedDB cache deleted": "IndexedDB cache deleted", - "Developer": "Developer", + "Toggle debug logging": "Toggle debug logging", + "Debug logging enabled": "Debug logging enabled", + "Debug logging disabled": "Debug logging disabled", + "Development": "Development", "Open document": "Open document", "New document": "New document", "Publish": "Publish",