* Updated `CommandLineOptions` and `ConfigurationObject` to use `LoggingLevel` type instead of string for log levels. * Modified `LoggerFactory` to set logging levels using the new `LoggingLevelMapping` methods. * Removed the `example-usage.ts` file as it was no longer needed. * Adjusted `Threshold` class to simplify logging level management.
33 lines
1.3 KiB
TypeScript
33 lines
1.3 KiB
TypeScript
import { ConsoleAppender } from './appenders/ConsoleAppender';
|
|
import IAppender from './appenders/IAppender';
|
|
import {Logger} from './Logger';
|
|
import {LoggingLevel, LoggingLevelMapping, LoggingLevelType} from './LoggingLevel';
|
|
import {Threshold} from './Threshold';
|
|
|
|
export default class LoggerFactory {
|
|
private static readonly _loggerForCategory: Map<string, Logger> = new Map();
|
|
private static readonly _threshold: {level: LoggingLevel} = {level: LoggingLevel.Info};
|
|
private static readonly _appenders: IAppender[] = [new ConsoleAppender()];
|
|
|
|
public static getLogger(category: string): Logger {
|
|
let logger = LoggerFactory._loggerForCategory.get(category);
|
|
|
|
if (logger === undefined) {
|
|
logger = new Logger({category, threshold: new Threshold(LoggerFactory._threshold), appenders: LoggerFactory._appenders});
|
|
|
|
LoggerFactory._loggerForCategory.set(category, logger);
|
|
}
|
|
|
|
return logger;
|
|
}
|
|
|
|
public static setLoggingLevel(level: LoggingLevelType): void {
|
|
const loggingLevel = LoggingLevelMapping.convertLoggingLevelTypeToLoggingLevel(level);
|
|
console.log(`${new Date().toISOString()} [LoggerFactory] Setting logging level to [${level}]`);
|
|
LoggerFactory._threshold.level = loggingLevel;
|
|
}
|
|
|
|
private constructor() {
|
|
throw new Error('[LoggerFactory] is a static class that may not be instantiated');
|
|
}
|
|
} |