UNPKG

@elastic.io/component-commons-library

Version:
69 lines (68 loc) 2.11 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getLogger = getLogger; const bunyan_1 = __importDefault(require("bunyan")); const bunyan_format_1 = __importDefault(require("bunyan-format")); const outputMode = process.env.LOG_OUTPUT_MODE || 'bunyan'; const formatOut = (0, bunyan_format_1.default)({ outputMode, levelInString: true, colorFromLevel: { 10: 'white', // TRACE 20: 'yellow', // DEBUG 30: 'green', // INFO 40: 'magenta', // WARN 50: 'red', // ERROR 60: 'inverse', // FATAL }, }); const lvlMap = { FATAL: bunyan_1.default.FATAL, ERROR: bunyan_1.default.ERROR, WARN: bunyan_1.default.WARN, INFO: bunyan_1.default.INFO, DEBUG: bunyan_1.default.DEBUG, TRACE: bunyan_1.default.TRACE, }; const appName = process.env.APP_NAME || 'app'; const defaultLevel = 'INFO'; const level = process.env.LOG_LEVEL || defaultLevel; function errSerializerWithErrors(err) { const output = bunyan_1.default.stdSerializers.err(err); if (err.errors) { output.errors = err.errors; } return output; } function requestSerializer(req) { if (!req || !req.connection) { return req; } return { method: req.method, url: req.url, headers: req.headers, remoteAddress: req.connection.remoteAddress, remotePort: req.connection.remotePort, body: req.body, }; } const serializers = Object.create(bunyan_1.default.stdSerializers); serializers.err = errSerializerWithErrors; serializers.req = requestSerializer; const loggers = {}; function getLogger(loggerName = 'defaultLogger') { if (!loggers[loggerName]) { loggers[loggerName] = bunyan_1.default.createLogger({ serializers, level: lvlMap[level.toUpperCase()], name: appName, src: true, stream: formatOut, }); } return loggers[loggerName]; }