У меня есть приложение Node.js, которое запускает команды оболочки с использованием execSync
и использует winston
для регистрации сообщений как на консоли, так и на транспортах файлов.
Проблема: Путем отслеживания В файле журнала мы видим, что сообщение, записываемое на консоль, не сразу записывается в файл, пока сценарий не завершится.
Есть ли способ заставить Winston немедленно сбросить журналы в файл?
Используя узел 12.14.1, winston 3.2.1, Ubuntu 18.04.3
В середине пробега
(слева) tail -f logs/test.log
(справа) node test.js
Конец трассы
(слева) tail -f logs/test.log
(Справа) node test.js
Nodejs Код
const winston = require('winston');
const { execSync } = require('child_process');
const options = {
file: {
level: 'debug',
filename: `./logs/test.log`,
},
console: {
level: 'debug'
}
};
let logger = winston.createLogger({
transports: [
new winston.transports.File(options.file),
new winston.transports.Console(options.console),
]
});
logger.info('First log message')
for (const name of ['jack','ryan','tom']) {
const output = execSync('sleep 1'); // simulate a command that does some work
logger.debug(name)
}