是否可以将记录器与名称隔离?

Is it possible to segregate logger with name?

目前如果我 运行 logger.debug('message') 我得到这样的输出

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

是否可以在创建记录器时做一些事情,使消息看起来更像这样?

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

最后我希望每个模块都自定义自己的logger,这样logging来自哪个模块就一目了然了

如果 winston logger 本身没有这个功能,你能推荐一个有这个功能的日志库吗?

您可能会使用 custom-logger

在那里你可以定义如下:

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"); 

获取输出:输出"I see 3 bananas!"

对于您的具体问题,您可以将此添加到您的代码中:

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"}
  });
}