可以将记录器与名称分开吗?

时间:2018-10-23 15:16:41

标签: javascript node.js winston

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

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

是否可以在创建记录器时做些什么,以便使消息看起来像这样?

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

最后,我想为每个模块自定义其自己的记录器,以便清楚地记录日志来自哪个模块

如果winston logger没有此功能,您可以推荐一个具有该功能的日志库吗?

1 个答案:

答案 0 :(得分:1)

您可以使用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"); 

获取输出:输出“我看到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"}
  });
}