Теперь в логах пишется название файла

This commit is contained in:
Данил 2024-08-12 18:04:35 +03:00
parent 5bbb422495
commit 2c9a28f80b

View file

@ -1,9 +1,58 @@
const pino = require('pino');
const pretty = require('pino-pretty');
const path = require('path');
const config = require('../config/main.js')();
const logger = pino({
level: config['server']['log']['level'] ? config['server']['log']['level'] : null,
}, pretty());
function getCallerFile() {
const originalFunc = Error.prepareStackTrace;
module.exports = logger;
let callerFile;
try {
const err = new Error();
let currentFile;
Error.prepareStackTrace = function (err, stack) { return stack; };
currentFile = err.stack.shift().getFileName();
while (err.stack.length) {
callerFile = err.stack.shift().getFileName();
if (currentFile !== callerFile) break;
}
} catch (e) {}
Error.prepareStackTrace = originalFunc;
return callerFile ? path.basename(callerFile) : 'unknown';
}
const logger = pino({
level: config['server']['log']['level'] ? config['server']['log']['level'] : 'info',
prettifier: pretty,
prettify: true,
messageKey: 'msg',
timestampKey: 'time',
}, pretty({
ignore: 'pid,hostname',
messageFormat: '{msg}',
}));
function wrapLogger(logger) {
const levels = ['fatal', 'error', 'warn', 'info', 'debug', 'trace'];
const wrappedLogger = {};
levels.forEach(level => {
wrappedLogger[level] = function (msg, ...args) {
const callerFile = getCallerFile();
const msgWithFilename = `[${callerFile}] ${msg}`;
logger[level](msgWithFilename, ...args);
};
});
wrappedLogger.child = logger.child.bind(logger);
return wrappedLogger;
}
module.exports = wrapLogger(logger);