Я пытаюсь использовать Winston и winston-daily-rotate-file , чтобы записать все выходные данные моей консоли / журнала с сервера node.js в один файл, который будет (надеюсь) меняются ежедневно в полночь.
Проблема, с которой я сталкиваюсь, заключается в том, что необработанные исключения создают новый файл журнала, а не записывают его в существующий. Смотрите пример кода ниже для поведения дублирования. Как мне получить весь вывод, который будет сохранен в одном лог-файле, а также вывод на консоль? В настоящее время консольная сторона выглядит хорошо, но вы можете указать на что-то очевидное, что я ' м отсутствует.
- ОС: Win 10
- узел: v12.16.0
- npm: v6.13.4
- winston: v3. 2.1
- winston-daily-rotate-file: v4.4.2
const winston = require('winston');
const DailyRotateFile = require('winston-daily-rotate-file');
const path = require('path');
var logger = new (winston.createLogger)({
transports: [
new (winston.transports.Console)({
format: winston.format.combine(
winston.format.timestamp(),
winston.format.colorize({ all: true }),
winston.format.printf((info) => {
const {
timestamp, level, message
} = info;
return `${timestamp} - ${level}: ${message}`;
}),
),
handleExceptions: true
}),
new DailyRotateFile({
name: 'file',
datePattern: 'YYYY-MM-DDTHH-mm-ss',
handleExceptions: true,
format: winston.format.combine(
winston.format.timestamp(),
winston.format.printf((info) => {
const {
timestamp, level, message
} = info;
return `${timestamp} - ${level}: ${message}`;
}),
),
filename: path.join(__dirname, 'logs', '%DATE%.log')
}),
]
});
logger.info("This is an info message");
logger.error("This is an error message");
setTimeout(() => {throw new Error('oh dear!')}, 5000);