Мне нужна базовая система ведения журнала для приложения NodeJS, поэтому я провожу некоторые тесты с log4js
, который кажется стандартным для этих случаев. Мне нужно распечатать сообщения как на консоль, так и в файл, поэтому я написал этот код:
// Logger
var log4js = require('log4js');
log4js.configure({
appenders: {
'console': { type: 'console' },
'file': { type: 'file', filename: 'logs/mailer.log' }
},
categories: {
default: { appenders: ['file', 'console'], level: 'DEBUG' },
}
});
var logger = log4js.getLogger("Mailer");
logger.info("Starting application");
try {
// CODE TO READ APP CONFIG FILE
}
catch(e) {
logger.error("Couldn't read app configuration file (config.yml)");
// This is the trouble maker. It kills the app without flushing the logs
process.exit(1);
}
Когда я запускаю приложение, журналы выглядят так:
[2019-07-29T16:07:24.763] [INFO] Mailer - Starting application
Проблема в том, что я вижу сообщения в консоли, но файл журнала остается пустым. Если я удалю его и снова запущу приложение, оно будет создано, поэтому я предполагаю, что проблема в отсутствующей опции или что-то в этом роде.
Любое предложение?
process.exit(1);
, и кажется, что логгер не сбрасывает сообщения в файл. Я провожу небольшое исследование и опубликую решение, когда найду его. - person Fel   schedule 29.07.2019