UNPKG

np-express-winston-logger

Version:

A TypeScript logger for Express using Winston and Elasticsearch

46 lines 2.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createElasticsearchTransport = exports.createConsoleTransport = void 0; const winston_1 = require("winston"); const winston_elasticsearch_1 = require("winston-elasticsearch"); const log_level_1 = require("./types/log-level"); const createConsoleTransport = (minLevel) => { const consoleFormat = winston_1.format.combine(winston_1.format.colorize(), winston_1.format.timestamp({ format: () => new Date().toISOString() }), winston_1.format.errors({ stack: true }), winston_1.format.printf((log) => { const { level, message, timestamp, service, stack } = log; const splat = log[Symbol.for("splat")] || []; const metaString = splat.length ? ` ${JSON.stringify(splat[0], null, 2)}` : ""; const stackString = `${stack ? `\n${stack}` : ""} `; const reqId = log?.requestId ? `[reqId=${log.requestId}]` : ""; return `${timestamp} [${level}] ${service}: ${reqId} ${message}: ${stackString} ${metaString}`; })); return new winston_1.transports.Console({ handleExceptions: true, level: minLevel, format: consoleFormat, }); }; exports.createConsoleTransport = createConsoleTransport; const createElasticsearchTransport = ({ url, minLevel, serviceName, }) => { const esTransfer = (log) => { const { level, message, timestamp, service, stack } = log; const meta = log[Symbol.for("splat")]?.[0] || log?.meta; return { timestamp, message, stack, meta, level: level || log_level_1.LogLevel.INFO, service: service || serviceName, }; }; return new winston_elasticsearch_1.ElasticsearchTransport({ level: minLevel, clientOpts: { node: url }, indexPrefix: `${serviceName}-logs`, transformer: esTransfer, }); }; exports.createElasticsearchTransport = createElasticsearchTransport; //# sourceMappingURL=transports.js.map