Quiero registrar errores al intentar capturar la construcción usando log4js. Tengo el siguiente código:
let log4js = require('log4js') log4js.configure({ appenders: { asterisk: {type: 'file', filename: 'filename'}, out: {type: 'stdout'}, }, categories: {default: {appenders: ['asterisk', 'out'], level: 'all'}} }) const logger = log4js.getLogger('asterisk') async function myFunc() { try { let tmp = await someFunc() } catch (err) { logger.error(err) process.exit(1) } } myFunc()Cuando ocurre un error, lo veo en la consola, pero no se escribe en el archivo. Si uso el registrador fuera del bloque try..catch, entonces todo funciona bien. ¿Cual podría ser el problema?
Como me sugirieron en GitHub, el problema está en el proceso. salida: esto hace que el nodo se cierre antes de que la llamada logger.error (que es asíncrona detrás de escena) haya escrito en el archivo. El código correcto será así:
logger.error(err) logger.shutdown(() => process.exit(1))y funciona bien