Files
ChannelTests-TS/test/logger/LoggerFactory.ts
Alexander Zinn eced0a6a2c Refactor CommandLine and LoggerFactory for improved type handling
* Updated `CommandLine` class to replace `ConfigurationObject` with `CommandLineOptions` for better type consistency.
* Refactored command line option setup into a separate method for clarity.
* Modified `LoggerFactory` to directly use `LoggingLevel` type in `setLoggingLevel` method, enhancing logging level management.
2025-08-18 18:26:04 -04:00

32 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: LoggingLevel): void {
console.log(`${new Date().toISOString()} [LoggerFactory] Setting logging level to [${LoggingLevelMapping.convertLoggingLevelToLoggingLevelType(level)}]`);
LoggerFactory._threshold.level = level;
}
private constructor() {
throw new Error('[LoggerFactory] is a static class that may not be instantiated');
}
}