UNPKG

@receeco/pos-agent

Version:

Receeco POS Integration Middleware Agent

93 lines 4.37 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createLogger = void 0; const winston_1 = __importDefault(require("winston")); const path_1 = __importDefault(require("path")); const fs_1 = __importDefault(require("fs")); const logsDir = path_1.default.join(process.cwd(), "logs"); if (!fs_1.default.existsSync(logsDir)) { fs_1.default.mkdirSync(logsDir, { recursive: true }); } const createLogger = () => { const isProduction = process.env.NODE_ENV === 'production'; const isRender = process.env.RENDER === 'true'; const transports = []; if (isRender) { transports.push(new winston_1.default.transports.Console({ level: "warn", format: winston_1.default.format.combine(winston_1.default.format.timestamp({ format: 'HH:mm:ss' }), winston_1.default.format.errors({ stack: true }), winston_1.default.format.printf(({ timestamp, level, message, service, stack, ...meta }) => { const safeStringify = (obj) => { try { return JSON.stringify(obj, (key, value) => { if (key === 'req' || key === 'res' || key === 'request' || key === 'response') { return '[Circular]'; } if (typeof value === 'object' && value !== null) { if (value.constructor && value.constructor.name === 'ClientRequest') { return '[ClientRequest]'; } if (value.constructor && value.constructor.name === 'IncomingMessage') { return '[IncomingMessage]'; } } return value; }); } catch (error) { return '[Unserializable Object]'; } }; const metaStr = Object.keys(meta).length ? ` ${safeStringify(meta)}` : ''; const stackStr = stack ? `\n${stack}` : ''; return `[${timestamp}] ${level.toUpperCase()}: ${message}${metaStr}${stackStr}`; })), })); } else { transports.push(new winston_1.default.transports.Console({ format: winston_1.default.format.combine(winston_1.default.format.colorize(), winston_1.default.format.simple()), })); } if (!isProduction || !isRender) { try { const DailyRotateFile = require("winston-daily-rotate-file"); transports.push(new DailyRotateFile({ filename: path_1.default.join(logsDir, "error-%DATE%.log"), datePattern: "YYYY-MM-DD", level: "error", maxSize: "5m", maxFiles: "3d", zippedArchive: true, }), new DailyRotateFile({ filename: path_1.default.join(logsDir, "combined-%DATE%.log"), datePattern: "YYYY-MM-DD", maxSize: "10m", maxFiles: "3d", zippedArchive: true, })); } catch (error) { transports.push(new winston_1.default.transports.File({ filename: path_1.default.join(logsDir, "error.log"), level: "error", maxsize: 5242880, maxFiles: 2, }), new winston_1.default.transports.File({ filename: path_1.default.join(logsDir, "combined.log"), maxsize: 10485760, maxFiles: 2, })); } } return winston_1.default.createLogger({ level: isRender ? "warn" : (process.env.LOG_LEVEL || "info"), format: winston_1.default.format.combine(winston_1.default.format.timestamp(), winston_1.default.format.errors({ stack: true }), isRender ? winston_1.default.format.simple() : winston_1.default.format.json()), defaultMeta: { service: "receeco-pos-agent" }, transports, }); }; exports.createLogger = createLogger; //# sourceMappingURL=logger.js.map