UNPKG

@atton16/logger

Version:

A pre-configured winston logger for web services.

98 lines 3.97 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.logger = exports.loggerOptions = void 0; const nestLikeFile_format_1 = require("./nestLikeFile.format"); const winston = __importStar(require("winston")); const path = __importStar(require("path")); require("winston-daily-rotate-file"); const appName = process.env.LOG_APP_NAME || ''; const colorStr = process.env.LOG_COLOR || 'true'; const enableColor = colorStr && colorStr.trim().toLowerCase() === 'true' ? true : false; const timestampStr = process.env.LOG_TIMESTAMP || 'true'; const enableTimestamp = timestampStr && timestampStr.trim().toLowerCase() === 'true' ? true : false; const consoleFormat = winston.format.combine(winston.format.timestamp(), nestLikeFile_format_1.nestLikeFileFormat(appName, { color: enableColor, timestamp: enableTimestamp, })); const fileFormat = winston.format.combine(winston.format.timestamp(), nestLikeFile_format_1.nestLikeFileFormat(appName, { color: false, timestamp: enableTimestamp })); const transportsStr = process.env.LOG_TRANSPORTS || 'console,file'; const transportsComp = transportsStr.split(',').map((t) => t.trim()); const enableConsole = transportsComp.find((t) => t.toLowerCase() === 'console') ? true : false; const enableFile = transportsComp.find((t) => t.toLowerCase() === 'file') ? true : false; const transports = []; if (enableConsole) { transports.push(new winston.transports.Console({ level: process.env.LOG_LEVEL || 'debug', format: consoleFormat, })); } if (enableFile) { const filePrefix = process.env.LOG_FILE_PREFIX || ''; const filePatternError = filePrefix ? `${filePrefix}.err.%DATE%.log` : 'err.%DATE%.log'; const filePatternInfo = filePrefix ? `${filePrefix}.info.%DATE%.log` : 'info.%DATE%.log'; const filePatternDebug = filePrefix ? `${filePrefix}.debug.%DATE%.log` : 'debug.%DATE%.log'; const maxFiles = process.env.LOG_MAX_FILES || '60d'; const fileDatePattern = 'YYYY-MM-DD'; let logsFolder = process.env.LOG_FOLDER || './logs'; if (!path.isAbsolute(logsFolder)) { logsFolder = path.resolve(process.cwd(), logsFolder); } transports.push(new winston.transports.DailyRotateFile({ level: 'error', format: fileFormat, dirname: logsFolder, filename: filePatternError, datePattern: fileDatePattern, maxFiles: maxFiles, })); transports.push(new winston.transports.DailyRotateFile({ level: 'info', format: fileFormat, dirname: logsFolder, filename: filePatternInfo, datePattern: fileDatePattern, maxFiles: maxFiles, })); transports.push(new winston.transports.DailyRotateFile({ level: 'debug', format: fileFormat, dirname: logsFolder, filename: filePatternDebug, datePattern: fileDatePattern, maxFiles: maxFiles, })); } exports.loggerOptions = { transports, }; exports.logger = winston.createLogger(exports.loggerOptions); //# sourceMappingURL=logger.js.map