From a467791eaf0a5a7d9625a1db3304e6c9a508f6fd Mon Sep 17 00:00:00 2001 From: Elio Struyf Date: Thu, 25 Apr 2024 17:22:31 +0200 Subject: [PATCH] #796 - More logging --- src/commands/Dashboard.ts | 2 +- src/commands/Folders.ts | 6 ++++- src/dashboardWebView/components/App.tsx | 22 ++++++++++++++----- .../components/Contents/Contents.tsx | 5 ++++- .../components/DataView/DataView.tsx | 5 ++++- .../components/Media/Media.tsx | 5 ++++- .../components/SnippetsView/SnippetForm.tsx | 5 ++++- .../components/SnippetsView/Snippets.tsx | 5 ++++- .../components/TaxonomyView/TaxonomyView.tsx | 5 ++++- .../components/WelcomeView/WelcomeScreen.tsx | 5 ++++- src/helpers/DashboardSettings.ts | 8 +++++-- src/helpers/Logger.ts | 20 ++++++++++++----- src/helpers/Notifications.ts | 8 +++---- src/helpers/TaxonomyHelper.ts | 3 +++ src/listeners/dashboard/SettingsListener.ts | 4 +++- src/listeners/general/BaseListener.ts | 6 ++--- src/listeners/general/GitListener.ts | 13 ++++++++++- src/panelWebView/PanelProvider.ts | 2 +- src/services/PagesParser.ts | 8 +++---- 19 files changed, 101 insertions(+), 36 deletions(-) diff --git a/src/commands/Dashboard.ts b/src/commands/Dashboard.ts index 598b1ef5..96ee2e16 100644 --- a/src/commands/Dashboard.ts +++ b/src/commands/Dashboard.ts @@ -222,7 +222,7 @@ export class Dashboard { }); Dashboard.webview.webview.onDidReceiveMessage(async (msg) => { - Logger.info(`Receiving message from webview: ${msg.command}`); + Logger.info(`Receiving message from dashboard: ${msg.command}`); LocalizationListener.process(msg); DashboardListener.process(msg); diff --git a/src/commands/Folders.ts b/src/commands/Folders.ts index b43e030c..a4271c9d 100644 --- a/src/commands/Folders.ts +++ b/src/commands/Folders.ts @@ -545,9 +545,11 @@ export class Folders { * Find the content folders */ public static async getContentFolders() { + Logger.info('Folders:getContentFolders:start'); // Find folders that contain files const wsFolder = Folders.getWorkspaceFolder(); if (!wsFolder) { + Logger.error('Folders:getContentFolders:workspaceFolderNotFound'); return []; } @@ -568,7 +570,7 @@ export class Folders { folders = [...folders, ...(await this.findFolders(pattern))]; } catch (e) { Logger.error( - `Something went wrong while searching for folders with pattern "${pattern}": ${ + `Folders:getContentFolders:error: Something went wrong while searching for folders with pattern "${pattern}": ${ (e as Error).message }` ); @@ -581,6 +583,8 @@ export class Folders { } const uniqueFolders = [...new Set(folders)]; + + Logger.info('Folders:getContentFolders:end'); return uniqueFolders.map((folder) => relative(wsFolder?.path || '', folder)); } diff --git a/src/dashboardWebView/components/App.tsx b/src/dashboardWebView/components/App.tsx index 09650f16..520b5bed 100644 --- a/src/dashboardWebView/components/App.tsx +++ b/src/dashboardWebView/components/App.tsx @@ -70,7 +70,10 @@ export const App: React.FunctionComponent = ({ } useEffect(() => { - messageHandler.send(GeneralCommands.toVSCode.logging.info, `DASHBOARD: loaded with view ${view}`); + messageHandler.send(GeneralCommands.toVSCode.logging.info, { + message: `Loaded with view ${view}`, + location: 'DASHBOARD' + }); if (view && routePaths[view]) { navigate(routePaths[view]); @@ -82,11 +85,17 @@ export const App: React.FunctionComponent = ({ useEffect(() => { if (settings && Object.keys(settings).length > 0) { - messageHandler.send(GeneralCommands.toVSCode.logging.info, `DASHBOARD: settings loaded`); + messageHandler.send(GeneralCommands.toVSCode.logging.info, { + message: `Settings loaded`, + location: 'DASHBOARD' + }); } if (pages) { - messageHandler.send(GeneralCommands.toVSCode.logging.info, `DASHBOARD: pages loaded - ${pages.length} pages`); + messageHandler.send(GeneralCommands.toVSCode.logging.info, { + message: `Pages loaded - ${pages.length} pages`, + location: 'DASHBOARD' + }); } }, [JSON.stringify(settings), JSON.stringify(pages)]); @@ -112,10 +121,13 @@ export const App: React.FunctionComponent = ({ onError={(error: Error, componentStack: string, eventId: string) => { Messenger.send( GeneralCommands.toVSCode.logging.error, - `Event ID: ${eventId} + { + message: `Event ID: ${eventId} Message: ${error.message} -Stack: ${componentStack}` +Stack: ${componentStack}`, + location: 'DASHBOARD' + } ); }} > diff --git a/src/dashboardWebView/components/Contents/Contents.tsx b/src/dashboardWebView/components/Contents/Contents.tsx index b08ee0cd..d3b7b618 100644 --- a/src/dashboardWebView/components/Contents/Contents.tsx +++ b/src/dashboardWebView/components/Contents/Contents.tsx @@ -60,7 +60,10 @@ export const Contents: React.FunctionComponent = ({ }, [pageItems, selectedItemAction]); useEffect(() => { - messageHandler.send(GeneralCommands.toVSCode.logging.info, `DASHBOARD: Contents view loaded with ${pageItems.length} pages`); + messageHandler.send(GeneralCommands.toVSCode.logging.info, { + message: `Contents view loaded with ${pageItems.length} pages`, + location: 'DASHBOARD' + }); }, [JSON.stringify(pageItems)]); useEffect(() => { diff --git a/src/dashboardWebView/components/DataView/DataView.tsx b/src/dashboardWebView/components/DataView/DataView.tsx index 6a558540..34ff0eae 100644 --- a/src/dashboardWebView/components/DataView/DataView.tsx +++ b/src/dashboardWebView/components/DataView/DataView.tsx @@ -129,7 +129,10 @@ export const DataView: React.FunctionComponent = ( event: TelemetryEvent.webviewDataView }); - Messenger.send(GeneralCommands.toVSCode.logging.info, "DASHBOARD: Data view loaded"); + Messenger.send(GeneralCommands.toVSCode.logging.info, { + message: 'DataView loaded', + location: 'DASHBOARD' + }); return () => { Messenger.unlisten(messageListener); diff --git a/src/dashboardWebView/components/Media/Media.tsx b/src/dashboardWebView/components/Media/Media.tsx index acfa88dc..f5b399aa 100644 --- a/src/dashboardWebView/components/Media/Media.tsx +++ b/src/dashboardWebView/components/Media/Media.tsx @@ -154,7 +154,10 @@ export const Media: React.FunctionComponent = ( event: TelemetryEvent.webviewMediaView }); - Messenger.send(GeneralCommands.toVSCode.logging.info, "DASHBOARD: Media view loaded"); + Messenger.send(GeneralCommands.toVSCode.logging.info, { + message: `Media view loaded`, + location: 'DASHBOARD' + }); }, []); const { getRootProps, isDragActive } = useDropzone({ diff --git a/src/dashboardWebView/components/SnippetsView/SnippetForm.tsx b/src/dashboardWebView/components/SnippetsView/SnippetForm.tsx index 41c6006b..45047161 100644 --- a/src/dashboardWebView/components/SnippetsView/SnippetForm.tsx +++ b/src/dashboardWebView/components/SnippetsView/SnippetForm.tsx @@ -155,7 +155,10 @@ ${snippetBody} value }); } catch (e) { - messageHandler.send(GeneralCommands.toVSCode.logging.error, `SnippetForm: ${(e as Error).message}`); + messageHandler.send(GeneralCommands.toVSCode.logging.error, { + message: `SnippetForm: ${(e as Error).message}`, + location: 'DASHBOARD' + }); console.log('Error', (e as Error).message) } } diff --git a/src/dashboardWebView/components/SnippetsView/Snippets.tsx b/src/dashboardWebView/components/SnippetsView/Snippets.tsx index 710ceda0..8cf23029 100644 --- a/src/dashboardWebView/components/SnippetsView/Snippets.tsx +++ b/src/dashboardWebView/components/SnippetsView/Snippets.tsx @@ -85,7 +85,10 @@ export const Snippets: React.FunctionComponent = ( event: TelemetryEvent.webviewSnippetsView }); - Messenger.send(GeneralCommands.toVSCode.logging.info, "DASHBOARD: Snippets view loaded"); + Messenger.send(GeneralCommands.toVSCode.logging.info, { + message: `Snippets view loaded`, + location: 'DASHBOARD' + }); }, []); return ( diff --git a/src/dashboardWebView/components/TaxonomyView/TaxonomyView.tsx b/src/dashboardWebView/components/TaxonomyView/TaxonomyView.tsx index f6680b13..9ba266a6 100644 --- a/src/dashboardWebView/components/TaxonomyView/TaxonomyView.tsx +++ b/src/dashboardWebView/components/TaxonomyView/TaxonomyView.tsx @@ -57,7 +57,10 @@ export const TaxonomyView: React.FunctionComponent = ({ event: TelemetryEvent.webviewTaxonomyDashboard }); - Messenger.send(GeneralCommands.toVSCode.logging.info, "DASHBOARD: Taxonomy view loaded"); + Messenger.send(GeneralCommands.toVSCode.logging.info, { + message: 'Taxonomy view loaded', + location: 'DASHBOARD' + }); }, []); return ( diff --git a/src/dashboardWebView/components/WelcomeView/WelcomeScreen.tsx b/src/dashboardWebView/components/WelcomeView/WelcomeScreen.tsx index ef3f3651..f8f86c0f 100644 --- a/src/dashboardWebView/components/WelcomeView/WelcomeScreen.tsx +++ b/src/dashboardWebView/components/WelcomeView/WelcomeScreen.tsx @@ -29,7 +29,10 @@ export const WelcomeScreen: React.FunctionComponent = ({ event: TelemetryEvent.webviewWelcomeScreen }); - Messenger.send(GeneralCommands.toVSCode.logging.info, "DASHBOARD: Welcome view loaded"); + Messenger.send(GeneralCommands.toVSCode.logging.info, { + message: 'Welcome screen loaded', + location: "DASHBOARD" + }); const crntState: any = Messenger.getState() || {}; Messenger.setState({ diff --git a/src/helpers/DashboardSettings.ts b/src/helpers/DashboardSettings.ts index d893a3e7..6fe7e208 100644 --- a/src/helpers/DashboardSettings.ts +++ b/src/helpers/DashboardSettings.ts @@ -87,7 +87,7 @@ export class DashboardSettings { } public static async getSettings() { - Logger.info('Getting dashboard settings'); + Logger.info('DashboardSettings:getSettings:start'); try { const ext = Extension.getInstance(); @@ -171,9 +171,11 @@ export class DashboardSettings { lastUpdated: new Date().getTime() } as ISettings; + Logger.info('DashboardSettings:getSettings:end'); + return settings; } catch (error) { - Logger.error(`Error getting dashboard settings ${(error as Error).message}`); + Logger.error(`DashboardSettings:getSettings:error ${(error as Error).message}`); return {} as ISettings; } } @@ -183,6 +185,7 @@ export class DashboardSettings { * @returns */ private static async getDataFiles(): Promise { + Logger.info('DashboardSettings:getDataFiles:start'); const wsPath = parseWinPath(Folders.getWorkspaceFolder()?.fsPath); const files = Settings.get(SETTING_DATA_FILES); const folders = Settings.get(SETTING_DATA_FOLDERS); @@ -228,6 +231,7 @@ export class DashboardSettings { } } + Logger.info('DashboardSettings:getDataFiles:end'); return clonedFiles; } } diff --git a/src/helpers/Logger.ts b/src/helpers/Logger.ts index 9bcff3db..509409a1 100644 --- a/src/helpers/Logger.ts +++ b/src/helpers/Logger.ts @@ -3,6 +3,8 @@ import { commands, OutputChannel, window } from 'vscode'; import { format } from 'date-fns'; import { COMMAND_NAME } from '../constants'; +export type LoggerLocation = 'VSCODE' | 'DASHBOARD' | 'PANEL'; + export class Logger { private static instance: Logger; public static channel: OutputChannel | null = null; @@ -22,19 +24,25 @@ export class Logger { return Logger.instance; } - public static info(message: string, type: 'INFO' | 'WARNING' | 'ERROR' = 'INFO'): void { + public static info( + message: string, + location: LoggerLocation = 'VSCODE', + type: 'INFO' | 'WARNING' | 'ERROR' = 'INFO' + ): void { if (!Logger.channel) { Logger.getInstance(); } - Logger.channel?.appendLine(`["${type}" - ${format(new Date(), 'HH:mm:ss')}] ${message}`); + Logger.channel?.appendLine( + `["${type}" - ${format(new Date(), 'HH:mm:ss')}] ${location} | ${message}` + ); } - public static warning(message: string): void { - Logger.info(message, 'WARNING'); + public static warning(message: string, location: LoggerLocation = 'VSCODE'): void { + Logger.info(message, location, 'WARNING'); } - public static error(message: string): void { - Logger.info(message, 'ERROR'); + public static error(message: string, location: LoggerLocation = 'VSCODE'): void { + Logger.info(message, location, 'ERROR'); } } diff --git a/src/helpers/Notifications.ts b/src/helpers/Notifications.ts index 49b4fd74..fe6d1b7c 100644 --- a/src/helpers/Notifications.ts +++ b/src/helpers/Notifications.ts @@ -18,7 +18,7 @@ export class Notifications { * @returns */ public static info(message: string, ...items: any): Thenable { - Logger.info(`${EXTENSION_NAME}: ${message}`, 'INFO'); + Logger.info(`${EXTENSION_NAME}: ${message}`, 'VSCODE', 'INFO'); if (this.shouldShow('INFO')) { return window.showInformationMessage(`${EXTENSION_NAME}: ${message}`, ...items); @@ -34,7 +34,7 @@ export class Notifications { * @returns */ public static warning(message: string, ...items: any): Thenable { - Logger.info(`${EXTENSION_NAME}: ${message}`, 'WARNING'); + Logger.info(`${EXTENSION_NAME}: ${message}`, 'VSCODE', 'WARNING'); if (this.shouldShow('WARNING')) { return window.showWarningMessage(`${EXTENSION_NAME}: ${message}`, ...items); @@ -50,7 +50,7 @@ export class Notifications { * @returns */ public static error(message: string, ...items: any): Thenable { - Logger.info(`${EXTENSION_NAME}: ${message}`, 'ERROR'); + Logger.info(`${EXTENSION_NAME}: ${message}`, 'VSCODE', 'ERROR'); if (this.shouldShow('ERROR')) { return window.showErrorMessage(`${EXTENSION_NAME}: ${message}`, ...items); @@ -66,7 +66,7 @@ export class Notifications { * @returns */ public static errorWithOutput(message: string, ...items: any): Thenable { - Logger.info(`${EXTENSION_NAME}: ${message}`, 'ERROR'); + Logger.info(`${EXTENSION_NAME}: ${message}`, 'VSCODE', 'ERROR'); if (this.shouldShow('ERROR')) { return window.showErrorMessage( diff --git a/src/helpers/TaxonomyHelper.ts b/src/helpers/TaxonomyHelper.ts index b8dc5ad9..d610cd17 100644 --- a/src/helpers/TaxonomyHelper.ts +++ b/src/helpers/TaxonomyHelper.ts @@ -74,7 +74,9 @@ export class TaxonomyHelper { * @param options */ public static async get(type: TaxonomyType): Promise { + Logger.info(`TaxonomyHelper:get:start:${type}`); if (!TaxonomyHelper.db) { + Logger.info(`TaxonomyHelper:get:db-not-initialized`); return; } @@ -84,6 +86,7 @@ export class TaxonomyHelper { if (await TaxonomyHelper.db.exists(tagType)) { taxonomy = await TaxonomyHelper.db.getObject(tagType); } + Logger.info(`TaxonomyHelper:get:end:${type}`); return taxonomy; } diff --git a/src/listeners/dashboard/SettingsListener.ts b/src/listeners/dashboard/SettingsListener.ts index a242d61f..17d93ce1 100644 --- a/src/listeners/dashboard/SettingsListener.ts +++ b/src/listeners/dashboard/SettingsListener.ts @@ -11,7 +11,7 @@ import { } from '../../constants'; import { DashboardCommand } from '../../dashboardWebView/DashboardCommand'; import { DashboardMessage } from '../../dashboardWebView/DashboardMessage'; -import { DashboardSettings, Extension, Notifications, Settings } from '../../helpers'; +import { DashboardSettings, Extension, Logger, Notifications, Settings } from '../../helpers'; import { FrameworkDetector } from '../../helpers/FrameworkDetector'; import { Framework, Template, PostMessageData, StaticFolder, LoadingType } from '../../models'; import { BaseListener } from './BaseListener'; @@ -199,7 +199,9 @@ export class SettingsListener extends BaseListener { * Retrieve the settings for the dashboard */ public static async getSettings(clear: boolean = false) { + Logger.info(`SettingsListener:getSettings:start - clear: ${clear}`); const settings = await DashboardSettings.get(clear); + Logger.info(`SettingsListener:getSettings:end - setting keys: ${Object.keys(settings).length}`); this.sendMsg(DashboardCommand.settings, settings); } diff --git a/src/listeners/general/BaseListener.ts b/src/listeners/general/BaseListener.ts index 93d51e49..1e60163a 100644 --- a/src/listeners/general/BaseListener.ts +++ b/src/listeners/general/BaseListener.ts @@ -26,13 +26,13 @@ export abstract class BaseListener { } break; case GeneralCommands.toVSCode.logging.info: - Logger.info(msg.payload); + Logger.info(msg.payload.message, msg.payload.location); break; case GeneralCommands.toVSCode.logging.warn: - Logger.warning(msg.payload); + Logger.warning(msg.payload.message, msg.payload.location); break; case GeneralCommands.toVSCode.logging.error: - Logger.error(msg.payload); + Logger.error(msg.payload.message, msg.payload.location); break; } } diff --git a/src/listeners/general/GitListener.ts b/src/listeners/general/GitListener.ts index 77b1c698..dd427b8b 100644 --- a/src/listeners/general/GitListener.ts +++ b/src/listeners/general/GitListener.ts @@ -56,9 +56,19 @@ export class GitListener { * requiresCommitMessage: string[] * }>} The Git settings. */ - public static async getSettings() { + public static async getSettings(): Promise< + | { + isGitRepo: boolean; + actions: boolean; + disabledBranches: string[]; + requiresCommitMessage: string[]; + } + | undefined + > { + Logger.info('GitListener:getSettings:start'); const gitActions = Settings.get(SETTING_GIT_ENABLED); if (gitActions) { + Logger.info('GitListener:getSettings:end:enabled'); return { isGitRepo: gitActions ? await GitListener.isGitRepository() : false, actions: gitActions || false, @@ -71,6 +81,7 @@ export class GitListener { }; } + Logger.info('GitListener:getSettings:end:disabled'); return; } diff --git a/src/panelWebView/PanelProvider.ts b/src/panelWebView/PanelProvider.ts index c68d1beb..8584ecf7 100644 --- a/src/panelWebView/PanelProvider.ts +++ b/src/panelWebView/PanelProvider.ts @@ -100,7 +100,7 @@ export class PanelProvider implements WebviewViewProvider, Disposable { this.updateCurrentFile(); webviewView.webview.onDidReceiveMessage(async (msg) => { - Logger.info(`Receiving message from webview to panel: ${msg.command}`); + Logger.info(`Receiving message from panel: ${msg.command}`); LocalizationListener.process(msg); FieldsListener.process(msg); diff --git a/src/services/PagesParser.ts b/src/services/PagesParser.ts index 6856916c..8030e48c 100644 --- a/src/services/PagesParser.ts +++ b/src/services/PagesParser.ts @@ -77,7 +77,7 @@ export class PagesParser { * Parse all pages in the workspace */ public static async parsePages() { - Logger.info('PagesParser::parsePages: Start'); + Logger.info('PagesParser:parsePages:start'); i18n.clearFiles(); const ext = Extension.getInstance(); @@ -115,7 +115,7 @@ export class PagesParser { continue; } - Logger.error(`PagesParser::parsePages: ${file.filePath} - ${error.message}`); + Logger.error(`PagesParser:parsePages: ${file.filePath} - ${error.message}`); Notifications.error( l10n.t( LocalizationKey.servicesPagesParserParsePagesFileError, @@ -124,7 +124,7 @@ export class PagesParser { ); } } else { - Logger.info(`PagesParser::parsePages: Skipping file ${file.filePath}`); + Logger.info(`PagesParser:parsePages: Skipping file ${file.filePath}`); } } } @@ -138,7 +138,7 @@ export class PagesParser { PagesParser.allPages = [...pages]; PagesParser.pagesStatusBar.hide(); - Logger.info('PagesParser::parsePages: End'); + Logger.info('PagesParser::parsePages:end'); } /**