@atton16/logger
Version:
A pre-configured winston logger for web services.
98 lines • 3.97 kB
JavaScript
;
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