UNPKG

@kermank/nldp

Version:

A modular date/time parser for converting natural language into dates and times

67 lines 2.66 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Logger = void 0; const winston_1 = __importDefault(require("winston")); const uuid_1 = require("uuid"); const { combine, timestamp, printf, colorize } = winston_1.default.format; // Track the current operation ID let currentOperationId = null; // Color scheme for different log levels const colors = { error: 'red', warn: 'yellow', info: 'green', debug: 'blue' }; // Add colors to Winston winston_1.default.addColors(colors); // Format context object for better readability const formatContext = (context) => { if (!context || Object.keys(context).length === 0) return ''; const formatted = Object.entries(context) .map(([key, value]) => { const valueStr = typeof value === 'object' ? JSON.stringify(value, null, 2) : String(value); return `\n ${key}: ${valueStr}`; }) .join(''); return formatted; }; // Custom format for console output const consoleFormat = printf(({ level, message, timestamp, operationId, context, ...metadata }) => { const ts = typeof timestamp === 'string' ? new Date(timestamp) : timestamp; const timeStr = ts instanceof Date ? ts.toLocaleTimeString() : String(ts); const op = operationId || currentOperationId || 'no-op-id'; const ctx = formatContext(context); const meta = Object.keys(metadata).length > 0 ? `\n metadata: ${JSON.stringify(metadata, null, 2)}` : ''; return `[${timeStr}] ${level.padEnd(5)} [${op}] ${message}${ctx}${meta}`; }); // Create the logger instance const logger = winston_1.default.createLogger({ level: process.env.LOG_LEVEL || 'info', format: combine(timestamp(), colorize({ all: true }), consoleFormat), transports: [ new winston_1.default.transports.Console() ], exitOnError: false }); exports.Logger = { startOperation: () => { currentOperationId = (0, uuid_1.v4)(); return currentOperationId; }, endOperation: () => { currentOperationId = null; }, error: (message, context = {}, meta = {}) => logger.error(message, { context, ...meta }), warn: (message, context = {}, meta = {}) => logger.warn(message, { context, ...meta }), info: (message, context = {}, meta = {}) => logger.info(message, { context, ...meta }), debug: (message, context = {}, meta = {}) => logger.debug(message, { context, ...meta }), }; exports.default = exports.Logger; //# sourceMappingURL=Logger.js.map