2026-02-12 14:46:47 +00:00
|
|
|
import type { ILogger } from "../types";
|
2025-05-09 10:45:32 +00:00
|
|
|
|
|
|
|
|
export class ConsoleLogger implements ILogger {
|
2026-08-31 18:51:27 +00:00
|
|
|
constructor(private readonly processMetadata?: Record<string, unknown>) {}
|
|
|
|
|
|
2025-05-09 10:45:32 +00:00
|
|
|
info(message: string, meta?: any) {
|
2026-08-31 18:51:27 +00:00
|
|
|
console.log(`[INFO] ${message}`, this.merge(meta));
|
2025-05-09 10:45:32 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
warn(message: string, meta?: any) {
|
2026-08-31 18:51:27 +00:00
|
|
|
console.warn(`[WARN] ${message}`, this.merge(meta));
|
2025-05-09 10:45:32 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
error(message: string, error?: Error | any) {
|
2026-08-31 18:51:27 +00:00
|
|
|
console.error(`[ERROR] ${message}`, this.merge(error?.stack || error));
|
2025-05-09 10:45:32 +00:00
|
|
|
}
|
2025-05-20 10:08:24 +00:00
|
|
|
|
|
|
|
|
debug(message: string, meta?: any) {
|
2026-09-21 14:28:27 +00:00
|
|
|
if (process.env.NODE_ENV === "development") {
|
|
|
|
|
console.debug(`[DEBUG] ${message}`, this.merge(meta));
|
|
|
|
|
}
|
2026-08-31 18:51:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private merge(meta: unknown): unknown {
|
2026-09-10 11:26:33 +00:00
|
|
|
if (!this.processMetadata) {
|
|
|
|
|
return meta ?? "";
|
|
|
|
|
}
|
2026-08-31 18:51:27 +00:00
|
|
|
return typeof meta === "object" && meta !== null
|
|
|
|
|
? { ...this.processMetadata, ...meta }
|
|
|
|
|
: { ...this.processMetadata, detail: meta ?? null };
|
2025-05-20 10:08:24 +00:00
|
|
|
}
|
2025-05-09 10:45:32 +00:00
|
|
|
}
|
2025-09-23 10:40:49 +00:00
|
|
|
|
2026-08-31 18:51:27 +00:00
|
|
|
export const createConsoleLogger = (processMetadata?: Record<string, unknown>): ILogger =>
|
|
|
|
|
new ConsoleLogger(processMetadata);
|