From def79f104999710953124c77241c95a7726791f0 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Sat, 30 Oct 2021 14:36:39 +0200 Subject: chore(web): move logger to utils/ --- language-web/src/main/js/utils/PendingTask.ts | 4 +-- language-web/src/main/js/utils/logger.ts | 49 +++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 language-web/src/main/js/utils/logger.ts (limited to 'language-web/src/main/js/utils') diff --git a/language-web/src/main/js/utils/PendingTask.ts b/language-web/src/main/js/utils/PendingTask.ts index aa2b11b0..de59a99b 100644 --- a/language-web/src/main/js/utils/PendingTask.ts +++ b/language-web/src/main/js/utils/PendingTask.ts @@ -1,6 +1,6 @@ -import { getLogger } from '../logging'; +import { getLogger } from './logger'; -const log = getLogger('PendingTask'); +const log = getLogger('utils.PendingTask'); export class PendingTask { private readonly resolveCallback: (value: T) => void; diff --git a/language-web/src/main/js/utils/logger.ts b/language-web/src/main/js/utils/logger.ts new file mode 100644 index 00000000..306d122c --- /dev/null +++ b/language-web/src/main/js/utils/logger.ts @@ -0,0 +1,49 @@ +import styles, { CSPair } from 'ansi-styles'; +import log from 'loglevel'; +import * as prefix from 'loglevel-plugin-prefix'; + +const colors: Partial> = { + TRACE: styles.magenta, + DEBUG: styles.cyan, + INFO: styles.blue, + WARN: styles.yellow, + ERROR: styles.red, +}; + +prefix.reg(log); + +if (DEBUG) { + log.setLevel(log.levels.DEBUG); +} else { + log.setLevel(log.levels.WARN); +} + +if ('chrome' in window) { + // Only Chromium supports console ANSI escape sequences. + prefix.apply(log, { + format(level, name, timestamp) { + const formattedTimestamp = `${styles.gray.open}[${timestamp.toString()}]${styles.gray.close}`; + const levelColor = colors[level.toUpperCase()] || styles.red; + const formattedLevel = `${levelColor.open}${level}${levelColor.close}`; + const formattedName = `${styles.green.open}(${name || 'root'})${styles.green.close}`; + return `${formattedTimestamp} ${formattedLevel} ${formattedName}`; + }, + }); +} else { + prefix.apply(log, { + template: '[%t] %l (%n)', + }); +} + +const appLogger = log.getLogger(PACKAGE_NAME); + +appLogger.info('Version:', PACKAGE_NAME, PACKAGE_VERSION); +appLogger.info('Debug mode:', DEBUG); + +export function getLoggerFromRoot(name: string | symbol): log.Logger { + return log.getLogger(name); +} + +export function getLogger(name: string | symbol): log.Logger { + return getLoggerFromRoot(`${PACKAGE_NAME}.${name.toString()}`); +} -- cgit v1.2.3-70-g09d2