UNPKG

container.ts

Version:
76 lines 2.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const winston = require("winston"); const container_1 = require("../../container"); const Log_1 = require("./Log"); class WinstonLog extends Log_1.Log { constructor(name, opts) { super(name, opts); // Construct Winston logger with console transport. // TODO: Optional file transport. this._logger = new winston.Logger({ transports: [ new winston.transports.Console({ colorize: true, }), ], }); } /** Winston handler for incoming log messages. */ handleLog(log) { const callback = this.handleError.bind(this); let message; // If log message is an Error instance, use message string // and prepend error object to arguments. if (log.message instanceof Error) { message = log.message.message || log.message.name; log.args = [log.message].concat(log.args); } else { message = log.message; } // Map log level to winston log methods. switch (log.level) { case container_1.ELogLevel.Emergency: { this._logger.emerg(message, log.metadata, ...log.args, callback); break; } case container_1.ELogLevel.Alert: { this._logger.alert(message, log.metadata, ...log.args, callback); break; } case container_1.ELogLevel.Critical: { this._logger.crit(message, log.metadata, ...log.args, callback); break; } case container_1.ELogLevel.Error: { this._logger.error(message, log.metadata, ...log.args, callback); break; } case container_1.ELogLevel.Warning: { this._logger.warning(message, log.metadata, ...log.args, callback); break; } case container_1.ELogLevel.Notice: { this._logger.notice(message, log.metadata, ...log.args, callback); break; } case container_1.ELogLevel.Informational: { this._logger.info(message, log.metadata, ...log.args, callback); break; } case container_1.ELogLevel.Debug: { this._logger.debug(message, log.metadata, ...log.args, callback); break; } } } /** Winston error handler callback. */ handleError(error) { if (error != null) { process.stderr.write(String(error)); } } } exports.WinstonLog = WinstonLog; //# sourceMappingURL=WinstonLog.js.map