UNPKG

@project-sunbird/logger

Version:
90 lines (89 loc) 3.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.WinstonAdopter = void 0; var _a = require('winston'), createLogger = _a.createLogger, format = _a.format, transports = _a.transports; require('winston-daily-rotate-file'); var stringify = require('json-stringify-safe'); var path = require("path"); var WinstonAdopter = /** @class */ (function () { function WinstonAdopter() { this.transports = []; this.exceptionHandlers = []; } WinstonAdopter.prototype.initialize = function (config) { this.config = config; this.transports = [this.getDailyRotateFileLogger('app')]; this.exceptionHandlers = [this.getDailyRotateFileLogger('exceptions')]; if (process.env.NODE_ENV !== 'production') { this.transports.push(new transports.Console()); this.exceptionHandlers.push(new transports.Console()); } var combineMessage = format(function (info, opts) { var splat = info[Symbol.for('splat')] || []; if (splat.length) { info.message = typeof info.message === 'object' ? JSON.stringify(info.message) : info.message; splat.forEach(function (arg) { if (typeof arg === 'object') { info.message = info.message + ' ' + stringify(arg); } else { info.message = info.message + ' ' + arg; } }); info[Symbol.for('splat')] = []; } return info; }); this.logger = createLogger({ level: this.config.logLevel, defaultMeta: this.config.context, format: format.combine(combineMessage(), // should be added at first format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), format.json()), transports: this.transports, exceptionHandlers: this.exceptionHandlers, }); return true; }; WinstonAdopter.prototype.enableDebugMode = function (time, logLevel, combineLogs) { var _this = this; if (time === void 0) { time = 1000 * 60 * 10; } if (logLevel === void 0) { logLevel = 'debug'; } if (combineLogs === void 0) { combineLogs = false; } var dailyFileLogger = combineLogs ? this.getDailyRotateFileLogger('app') : this.getDailyRotateFileLogger('debug'); this.logger .clear() .add(dailyFileLogger) .add(new transports.Console()); this.logger.level = logLevel; setTimeout(function () { _this.logger.clear(); _this.logger.level = _this.config.logLevel; _this.logger.add(_this.getDailyRotateFileLogger('app')).add(new transports.Console()); }, time); return true; }; WinstonAdopter.prototype.getDailyRotateFileLogger = function (fileName) { return new transports.DailyRotateFile({ auditFile: path.join(this.config.logBasePath, 'audit.json'), filename: path.join(this.config.logBasePath, fileName + '-%DATE%.log'), datePattern: 'YYYY-MM-DD', zippedArchive: true, maxSize: '10m', maxFiles: '10d', json: true, }); }; WinstonAdopter.prototype.getLogs = function (options) { var _this = this; return new Promise(function (resolve, reject) { _this.logger.query(options, function (err, results) { if (err) { reject(err); } resolve(results); }); }); }; return WinstonAdopter; }()); exports.WinstonAdopter = WinstonAdopter;