UNPKG

restifyx.js

Version:

Advanced API endpoint handler system with automatic documentation

104 lines 4.28 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.stream = void 0; exports.setupLogger = setupLogger; exports.getLogger = getLogger; const winston_1 = __importDefault(require("winston")); const winston_daily_rotate_file_1 = __importDefault(require("winston-daily-rotate-file")); const path_1 = __importDefault(require("path")); const fs_1 = __importDefault(require("fs")); let loggerInstance; function setupLogger(config) { const levels = { error: 0, warn: 1, info: 2, http: 3, debug: 4, silly: 5, }; const colors = { error: "red", warn: "yellow", info: "green", http: "magenta", debug: "blue", silly: "grey", }; winston_1.default.addColors(colors); const consoleFormat = winston_1.default.format.combine(winston_1.default.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss:ms" }), config.colorize ? winston_1.default.format.colorize({ all: true }) : winston_1.default.format.uncolorize(), winston_1.default.format.printf((info) => `${config.timestamp ? info.timestamp : ""} ${info.level}: ${info.message}${info.error ? ` - ${info.error instanceof Error ? info.error.stack : JSON.stringify(info.error)}` : ""}`)); const fileFormat = winston_1.default.format.combine(winston_1.default.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss:ms" }), config.json ? winston_1.default.format.json() : winston_1.default.format.simple()); const transports = []; if (config.console) { transports.push(new winston_1.default.transports.Console({ format: consoleFormat })); } if (config.files) { const logsDir = path_1.default.join(process.cwd(), config.directory); if (!fs_1.default.existsSync(logsDir)) { fs_1.default.mkdirSync(logsDir, { recursive: true }); } const fileTransport = new winston_daily_rotate_file_1.default({ filename: path_1.default.join(logsDir, "application-%DATE%.log"), datePattern: "YYYY-MM-DD", zippedArchive: config.compress, maxSize: config.maxSize, maxFiles: config.maxFiles, format: fileFormat, }); transports.push(fileTransport); if (config.errorFile) { const errorFileTransport = new winston_daily_rotate_file_1.default({ filename: path_1.default.join(logsDir, "error-%DATE%.log"), datePattern: "YYYY-MM-DD", zippedArchive: config.compress, maxSize: config.maxSize, maxFiles: config.maxFiles, level: "error", format: fileFormat, }); transports.push(errorFileTransport); } if (config.httpFile) { const httpFileTransport = new winston_daily_rotate_file_1.default({ filename: path_1.default.join(logsDir, "http-%DATE%.log"), datePattern: "YYYY-MM-DD", zippedArchive: config.compress, maxSize: config.maxSize, maxFiles: config.maxFiles, level: "http", format: fileFormat, }); transports.push(httpFileTransport); } } loggerInstance = winston_1.default.createLogger({ level: config.level, levels, transports, exitOnError: false, }); return loggerInstance; } function getLogger() { if (!loggerInstance) { loggerInstance = winston_1.default.createLogger({ level: "info", format: winston_1.default.format.combine(winston_1.default.format.timestamp(), winston_1.default.format.json()), transports: [ new winston_1.default.transports.Console({ format: winston_1.default.format.combine(winston_1.default.format.colorize(), winston_1.default.format.simple()), }), ], }); } return loggerInstance; } exports.stream = { write: (message) => { getLogger().http(message.trim()); }, }; //# sourceMappingURL=logger.js.map