#node.js #winston
#node.js #winston
Вопрос:
Я создал простой регистратор Winston для своего приложения node, но конфигурация с метками времени не работает, что это значит? Это означает, что все журналы не имеют метки времени.
Пример:
const { createLogger, format, transports } = require('winston');
const logger = createLogger({
transports: [
new transports.File({
maxsize: 5120000,
maxFiles: 20,
filename: `logs/logs.log`,
colorize: true,
json: true,
timestamp: true
}),
new transports.Console({
level: "debug",
timestamp: true,
format: format.combine(
format.colorize(),
format.simple(),
format.timestamp()
)
})
]
});
module.exports = { logger };
Ответ №1:
simple()
формат не выводит метку времени. поэтому вы должны определить пользовательский формат с помощью printf
:
const { createLogger, format, transports } = require('winston');
const myFormat = format.printf(({ level, message, label, timestamp }) => {
return `${timestamp} [${label}] ${level}: ${message}`;
});
const logger = createLogger({
transports: [
new transports.File({
maxsize: 5120000,
maxFiles: 20,
filename: `logs/logs.log`,
timestamp: true,
json: true,
}),
new transports.Console({
level: "debug",
timestamp: true,
format: format.combine(
format.timestamp(),
format.colorize(),
myFormat,
)
})
]
});
module.exports = { logger };
я также переместил timestamp()
формат перед myFormat, поскольку он должен заполнить временную метку сообщения, прежде чем оно достигнет printf.
Комментарии:
1. Привет. Я вернулся с другим вопросом. Временные метки отображаются, но не добавляются в file .log — есть ли какое-либо решение для добавления временных меток в файл журнала?
2. я обновил код для временных меток файлов. я также удалил раскрашивание из file transport, поскольку вы не должны помещать информацию о цвете в файл (используйте его только для консоли).
3. единственное отличие заключается в том, что вы должны переместить timestamp: true перед json: true
4. Я создал второй файл myformat и с помощью строковых шаблонов создал объект, это работает, но я понятия не имею, хороший ли это способ