This commit is contained in:
2025-08-18 21:51:28 -04:00
parent 1eb0637d38
commit f3ecb8c35b
19 changed files with 179 additions and 646 deletions

View File

@@ -65,7 +65,7 @@ export class Logger {
const timestamp = new Date().toISOString();
const formattedMessage = this.formatMessage(message, ...optionalParameters);
const levelString = LoggingLevelMapping.convertLoggingLevelToLoggingLevelType(level);
// Safely call appenders with error handling
this._appenders.forEach(appender => {
try {
@@ -86,22 +86,23 @@ export class Logger {
// More efficient parameter substitution
let result = message;
let paramIndex = 0;
// Replace all {} placeholders with parameters
while (result.includes('{}') && paramIndex < optionalParameters.length) {
const paramString = this.parameterToString(optionalParameters[paramIndex]);
result = result.replace('{}', paramString);
paramIndex++;
}
// Append remaining parameters if any
if (paramIndex < optionalParameters.length) {
const remainingParams = optionalParameters.slice(paramIndex)
const remainingParams = optionalParameters
.slice(paramIndex)
.map(param => this.parameterToString(param))
.join(' ');
result += ` ${remainingParams}`;
}
return result;
}

View File

@@ -1,20 +1,20 @@
import { ConsoleAppender } from './appenders/ConsoleAppender';
import {ConsoleAppender} from './appenders/ConsoleAppender';
import IAppender from './appenders/IAppender';
import {Logger} from './Logger';
import {LoggingLevel, LoggingLevelMapping, LoggingLevelType} from './LoggingLevel';
import {LoggingLevel, LoggingLevelMapping} 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()];
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);
}
@@ -29,4 +29,4 @@ export default class LoggerFactory {
private constructor() {
throw new Error('[LoggerFactory] is a static class that may not be instantiated');
}
}
}

View File

@@ -12,19 +12,19 @@ export class ConsoleAppender implements IAppender {
console.info(`${timestamp} [${category}] ${message}`);
break;
case LoggingLevel.Error:
case LoggingLevel.Error:
console.error(`${timestamp} [${category}] ${message}`);
break;
case LoggingLevel.Fatal:
case LoggingLevel.Fatal:
console.error(`${timestamp} [${category}] ${message}`);
break;
case LoggingLevel.Off:
case LoggingLevel.All:
case LoggingLevel.Off:
case LoggingLevel.All:
break;
default:
default:
assertUnreachable(level);
}
}