This commit is contained in:
2025-12-14 18:11:59 +01:00
parent acc15e8d8d
commit 217337862c
91 changed files with 5919 additions and 1999 deletions

View File

@@ -0,0 +1,42 @@
import { LoggerPort } from '../../../application/ports/LoggerPort';
import { ConsoleLogger } from '../../../../shared/logging/ConsoleLogger';
import { LogContext } from '../../../application/ports/LoggerContext';
export class ConsoleLogAdapter implements LoggerPort {
private consoleLogger: ConsoleLogger;
private readonly context: LogContext;
constructor(context: LogContext = {}) {
this.consoleLogger = new ConsoleLogger();
this.context = context;
}
debug(message: string, context?: LogContext): void {
this.consoleLogger.debug(message, { ...this.context, ...context });
}
info(message: string, context?: LogContext): void {
this.consoleLogger.info(message, { ...this.context, ...context });
}
warn(message: string, context?: LogContext): void {
this.consoleLogger.warn(message, { ...this.context, ...context });
}
error(message: string, error?: Error, context?: LogContext): void {
this.consoleLogger.error(message, error, { ...this.context, ...context });
}
fatal(message: string, error?: Error, context?: LogContext): void {
this.consoleLogger.error(`FATAL: ${message}`, error, { ...this.context, ...context });
}
child(context: LogContext = {}): LoggerPort {
return new ConsoleLogAdapter({ ...this.context, ...context });
}
async flush(): Promise<void> {
// No-op for console logger as it's synchronous
return Promise.resolve();
}
}

View File

@@ -1,7 +1,8 @@
import type { LoggerPort } from '../../../application/ports/LoggerPort';
import type { LogContext } from '../../../application/ports/LoggerContext';
import type { ILogger } from '@gridpilot/shared/logging/ILogger';
export class NoOpLogAdapter implements LoggerPort {
export class NoOpLogAdapter implements LoggerPort, ILogger {
debug(_message: string, _context?: LogContext): void {}
info(_message: string, _context?: LogContext): void {}

View File

@@ -2,6 +2,7 @@ import type { LoggerPort } from '@gridpilot/automation/application/ports/LoggerP
import type { LogContext } from '@gridpilot/automation/application/ports/LoggerContext';
import type { LogLevel } from '@gridpilot/automation/application/ports/LoggerLogLevel';
import { loadLoggingConfig, type LoggingEnvironmentConfig } from '../../config/LoggingConfig';
import type { ILogger } from '@gridpilot/shared/logging/ILogger';
const LOG_LEVEL_PRIORITY: Record<LogLevel, number> = {
debug: 10,
@@ -20,7 +21,7 @@ const LOG_LEVEL_PRIORITY: Record<LogLevel, number> = {
*
* This provides structured JSON logging to stdout with the same interface.
*/
export class PinoLogAdapter implements LoggerPort {
export class PinoLogAdapter implements LoggerPort, ILogger {
private readonly config: LoggingEnvironmentConfig;
private readonly baseContext: LogContext;
private readonly levelPriority: number;