np-express-winston-logger
Version:
A TypeScript logger for Express using Winston and Elasticsearch
46 lines • 2.04 kB
JavaScript
;
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