From 75b692530f01a4c83515a194fc6232418b802259 Mon Sep 17 00:00:00 2001 From: Niels Klomp Date: Thu, 25 Jul 2024 01:21:51 +0200 Subject: [PATCH] fix: Logger fixes --- package.json | 1 + packages/ssi-types/__tests__/logging.test.ts | 2 +- packages/ssi-types/src/logging/index.ts | 45 ++++++++++++-------- 3 files changed, 30 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index 8cfb6ef48..354f0b370 100644 --- a/package.json +++ b/package.json @@ -115,6 +115,7 @@ "@sphereon/oid4vci-client": "0.14.0", "@sphereon/oid4vci-issuer": "0.14.0", "@noble/hashes": "1.2.0", + "debug": "^4.3.5", "did-jwt": "6.11.6", "did-jwt-vc": "3.1.3", "ethr-did": "2.3.9", diff --git a/packages/ssi-types/__tests__/logging.test.ts b/packages/ssi-types/__tests__/logging.test.ts index 37ec34a9a..83c2e80b6 100644 --- a/packages/ssi-types/__tests__/logging.test.ts +++ b/packages/ssi-types/__tests__/logging.test.ts @@ -26,6 +26,6 @@ describe('Simple logging', () => { it('Should perform a debug package, console and event log', () => { Loggers.DEFAULT.options('all', { methods: [LogMethod.DEBUG_PKG, LogMethod.CONSOLE, LogMethod.EVENT] }) .get('all') - .log('TEST ALL') + .log('TEST ALL', 'additional arg1', {arg2: "value2"}) }) }) diff --git a/packages/ssi-types/src/logging/index.ts b/packages/ssi-types/src/logging/index.ts index 85138e537..d66114cc3 100644 --- a/packages/ssi-types/src/logging/index.ts +++ b/packages/ssi-types/src/logging/index.ts @@ -1,4 +1,4 @@ -import Debug from 'debug' +import {debug} from 'debug' import { EventEmitter } from 'events' export enum LogLevel { @@ -96,7 +96,7 @@ export type ISimpleLogger = { trace(value: LogType, ...args: any[]): void warning(value: LogType, ...args: any[]): void error(value: LogType, ...args: any[]): void - logl(level: LogLevel, value: LogType, ...args: any[]): void + logl(level: LogLevel, value: LogType, ...argsW: any[]): void } export class SimpleLogger implements ISimpleLogger { @@ -116,28 +116,32 @@ export class SimpleLogger implements ISimpleLogger { } trace(value: any, ...args: any[]) { - this.logl(LogLevel.TRACE, value, args) + this.logImpl(LogLevel.TRACE, value, ...args) } debug(value: any, ...args: any[]) { - this.logl(LogLevel.DEBUG, value, args) + this.logImpl(LogLevel.DEBUG, value, ...args) } info(value: any, ...args: any[]) { - this.logl(LogLevel.INFO, value, args) + this.logImpl(LogLevel.INFO, value, ...args) } warning(value: any, ...args: any[]) { - this.logl(LogLevel.WARNING, value, args) + this.logImpl(LogLevel.WARNING, value, ...args) } error(value: any, ...args: any[]) { - this.logl(LogLevel.ERROR, value, args) + this.logImpl(LogLevel.ERROR, value, ...args) } logl(level: LogLevel, value: any, ...args: any[]) { + this.logImpl(level, value, ...args) + } + + private logImpl(level: LogLevel, value: any, ...args: any[]) { const date = new Date().toISOString() - const filteredArgs = args.filter((v) => v!!) + const filteredArgs = args?.filter((v) => v!!) ?? [] const arg = filteredArgs.length === 0 || filteredArgs[0] == undefined ? undefined : filteredArgs function toLogValue(options: SimpleLogOptions): any { @@ -156,32 +160,39 @@ export class SimpleLogger implements ISimpleLogger { logArgs.push(args) } if (this.options.methods.includes(LogMethod.DEBUG_PKG)) { + const log = debug(this._options.namespace) if (arg) { - Debug(this._options.namespace)(`${date}- ${value}`, arg) + log(`${date}- ${value},`, ...arg) } else { - Debug(this._options.namespace)(`${date}- ${value}`) + log(`${date}- ${value}`) } } if (this.options.methods.includes(LogMethod.CONSOLE)) { const [value, args] = logArgs + let logMethod = console.info switch (level) { case LogLevel.TRACE: - console.trace(value, args) + logMethod = console.trace break case LogLevel.DEBUG: - console.debug(value, args) + logMethod = console.debug break case LogLevel.INFO: - console.info(value, args) + logMethod = console.info break case LogLevel.WARNING: - console.warn(value, args) + logMethod = console.warn break case LogLevel.ERROR: - console.error(value, args) + logMethod = console.error break } + if (args) { + logMethod(value + ',', ...args) + } else { + logMethod(value) + } } if (this.options.methods.includes(LogMethod.EVENT)) { @@ -195,8 +206,8 @@ export class SimpleLogger implements ISimpleLogger { } } - log(value: any, args?: any[]) { - this.logl(this.options.defaultLogLevel, value, args) + log(value: any, ...args: any[]) { + this.logImpl(this.options.defaultLogLevel, value, ...args) } }