Можно ли отделить регистратор по имени?

в настоящее время, если я запускаю logger.debug('message'), я получаю такой вывод

{"message":"message","level":"debug"}

Можно ли что-то сделать при создании логгера, чтобы сообщение выглядело примерно так?

{"message":"message","level":"debug","name":"someModule"}

В конце я бы хотел, чтобы для каждого модуля был настроен собственный логгер, чтобы было ясно, в какой модуль пришло логирование.

Если у Winston Logger нет собственной функции, можете ли вы порекомендовать одну библиотеку журналирования, которая имеет?

🤔 А знаете ли вы, что...
JavaScript используется для разработки современных одностраничных приложений (SPA), где весь контент загружается асинхронно.


32
1

Ответ:

Решено

Вы можете использовать пользовательский регистратор

Там вы можете определить что-то вроде:

var log = require('custom-logger').config({ format: "%message% %level%[%timestamp%]: %name%" });

также что-то более сложное, например:

log.new({
    alert: { level: 3, color: 'red', event: 'alert', format: '!!!!!%event% : %message% !!!!!' name: '%name%' }
});

И очень просто:

log.info("I see %d %s!", 3, "bananas"); 

Получение вывода: Выводы "Я вижу 3 банана!"

Для вашего конкретного вопроса вы можете добавить это в свой код:

log.new({
   debug: { message: "This is the message" , level :"debug", name: "Your module name"}
});

Чтобы использовать стандарт, предоставляемый библиотекой:

log.new({
       fatal: { message: "THIS IS THE END!" , level :"fatal", name: "Your module name"}
    });

Если вы хотите определить свои собственные цвета для лучшего обзора:

log.info().config({ color: 'cyan' }); //This should be declared as global
log.info('Hello World!');

Также вы можете назначить

try {
  eval('alert("Hello world)');
}
catch(error) {
  console.error(error);
  log.new({
     error: { message: error, level :"error", name: "Your module name"}
  });
}