From c3c13351a9f26f2209b51b8ded5e8f2a1ad86e94 Mon Sep 17 00:00:00 2001 From: Paul Thompson Date: Mon, 6 Jul 2020 13:57:31 +1000 Subject: std/log - Expose Logger type and improve public interface for get & set log levels (#6617) --- std/log/logger.ts | 43 ++++++++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 11 deletions(-) (limited to 'std/log/logger.ts') diff --git a/std/log/logger.ts b/std/log/logger.ts index 004088d9a..05e83dc77 100644 --- a/std/log/logger.ts +++ b/std/log/logger.ts @@ -43,22 +43,43 @@ export interface LoggerOptions { } export class Logger { - level: number; - levelName: LevelName; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - handlers: any[]; - loggerName: string; + #level: LogLevels; + #handlers: BaseHandler[]; + readonly #loggerName: string; constructor( loggerName: string, levelName: LevelName, options: LoggerOptions = {} ) { - this.loggerName = loggerName; - this.level = getLevelByName(levelName); - this.levelName = levelName; + this.#loggerName = loggerName; + this.#level = getLevelByName(levelName); + this.#handlers = options.handlers || []; + } + + get level(): LogLevels { + return this.#level; + } + set level(level: LogLevels) { + this.#level = level; + } - this.handlers = options.handlers || []; + get levelName(): LevelName { + return getLevelName(this.#level); + } + set levelName(levelName: LevelName) { + this.#level = getLevelByName(levelName); + } + + get loggerName(): string { + return this.#loggerName; + } + + set handlers(hndls: BaseHandler[]) { + this.#handlers = hndls; + } + get handlers(): BaseHandler[] { + return this.#handlers; } /** If the level of the logger is greater than the level to log, then nothing @@ -68,7 +89,7 @@ export class Logger { * function, not the function itself, unless the function isn't called, in which * case undefined is returned. All types are coerced to strings for logging. */ - _log( + private _log( level: number, msg: (T extends Function ? never : T) | (() => T), ...args: unknown[] @@ -92,7 +113,7 @@ export class Logger { loggerName: this.loggerName, }); - this.handlers.forEach((handler): void => { + this.#handlers.forEach((handler): void => { handler.handle(record); }); -- cgit v1.2.3