Files
sap-legacy-webhook-emulator/src/lib/logger.ts
T

36 lines
1.3 KiB
TypeScript
Raw Normal View History

2026-09-16 08:30:45 -05:00
import { appendFileSync, mkdirSync } from 'node:fs';
import { fileURLToPath } from 'node:url';
// Log a archivo, uno por día (logs/dispatcher-YYYY-MM-DD.log), además de
// consola — para que un servicio Windows (NSSM/PM2/Task Scheduler, ver
// README) no dependa de que algo capture su stdout. Formato de línea
// simple (timestamp ISO + nivel entre corchetes) para que lo pueda leer
// cualquier visualizador de logs genérico (ej. lnav, o un `tail -f`).
const LOGS_DIR = fileURLToPath(new URL('../../logs/', import.meta.url));
mkdirSync(LOGS_DIR, { recursive: true });
function logFilePath(date: Date): string {
const day = date.toISOString().slice(0, 10);
return `${LOGS_DIR}dispatcher-${day}.log`;
}
function write(level: string, message: string): void {
const now = new Date();
appendFileSync(logFilePath(now), `${now.toISOString()} [${level}] ${message}\n`);
}
export const logger = {
info(message: string): void {
console.log(message);
write('INFO', message);
},
warn(message: string): void {
console.warn(message);
write('WARN', message);
},
error(message: string, err?: unknown): void {
const detail = err instanceof Error ? (err.stack ?? err.message) : err !== undefined ? String(err) : '';
console.error(message, err ?? '');
write('ERROR', detail ? `${message} ${detail}` : message);
},
};