ведение журнала winston, работающее только в обратных вызовах, не работающее в блоках catch

Я настраиваю сервер и хочу регистрировать все ошибки и информацию в своих пользовательских файлах. все те ошибки, которые обнаруживаются в блоке catch, должны храниться в файле "catch_error.log", а все эти информационные сообщения должны храниться в "console.log". поэтому я установил регистратор Winston для регистрации всего этого. Регистратор - это объект, который предоставляет различные методы. logger.log («некоторый текст») записывает сообщение на моей консоли, а также соответствующий файл журнала, когда я вызываю его в функции обратного вызова. Но когда я вызываю его из блока catch, он печатает только на консольном терминале, не регистрируясь в соответствующем файле журнала. почему это происходит ?? Я хочу регистрировать все те сообщения, которые находятся в блоке catch.

const express = require(`express`);
const app = express();
const fs = require(`fs`);
const winston = require(`winston`);
const CONSOLE = new winston.transports.Console();
const ERROR = new winston.transports.File({ filename: './../../log/catch_error/catch_error.log', level: 'error' });
const INFO = new winston.transports.File({ filename: './../../log/console/console.log', level: 'info' });
const logger = winston.createLogger({
    format: winston.format.json(),
    transports: [
        CONSOLE,
        ERROR,
        INFO
    ],
    silent: false
});
let CONFIG = null
try{
    CONFIG = 
JSON.pase(fs.readFileSync('./../../../../config.json'));  //error generate pase instead of parse
}catch(err){
    logger.log({     //log on terminal but not in catch_error.log file

          level: `error`,
          message: err.message,
          stack: err.stack

    });
    //process.exit();
}
/**************************this is working*********************/
app.listen(8080, () => {

    logger.log({ //log on terminal as well as console.log file

        level: `info`,
        message: `server running at 8080`

    });

});

person Dhruvin modi    schedule 19.08.2019    source источник


Ответы (1)


process.exit() убивает поток, поэтому у Winston не остается времени для записи в файл.

person Jonas Wilms    schedule 19.08.2019
comment
та же проблема после комментирования process.exit() - person Dhruvin modi; 19.08.2019