cris-shared
Version:
A collection of reusable utilities and shared code for microservices.
73 lines • 2.81 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.winstonLogger = void 0;
const winston_1 = __importDefault(require("winston"));
const winston_loki_1 = __importDefault(require("winston-loki"));
const winstonLogger = (lokiUrl, name, level, nodeEnv) => {
const options = {
console: {
level,
handleExceptions: true,
format: winston_1.default.format.combine(winston_1.default.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), winston_1.default.format.colorize({ all: true }), winston_1.default.format.printf(({ level, message, label, timestamp }) => {
return `${timestamp} [${label || name}] ${level}: ${message}`;
})),
json: false,
},
file: {
level: level,
handleExceptions: true,
format: winston_1.default.format.combine(winston_1.default.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss.SSS" }), winston_1.default.format.printf(({ level, message, label, timestamp }) => {
return `${timestamp} [${label || name}] ${level}: ${message}`;
})),
},
loki: {
labels: { app: name, environment: nodeEnv },
level,
host: lokiUrl,
format: winston_1.default.format.json(),
replaceTimestamp: true,
onConnectionError: (err) => console.error(err),
},
};
let transports = [];
if (nodeEnv === "development") {
transports = [
new winston_1.default.transports.Console(options.console),
new winston_1.default.transports.File({
...options.file,
filename: "logs/error.log",
level: "error",
}),
new winston_1.default.transports.File({
...options.file,
filename: "logs/app.log",
}),
new winston_loki_1.default(options.loki),
];
}
else {
transports = [
new winston_1.default.transports.File({
...options.file,
filename: "logs/error.log",
level: "error",
}),
new winston_1.default.transports.File({
...options.file,
filename: "logs/app.log",
}),
new winston_loki_1.default(options.loki),
];
}
const logger = winston_1.default.createLogger({
exitOnError: false,
defaultMeta: { service: name },
transports: transports,
});
return logger;
};
exports.winstonLogger = winstonLogger;
//# sourceMappingURL=logger.js.map