【发布时间】:2016-01-14 12:39:35
【问题描述】:
我正在查看顶级节点日志记录系统:npmlog、log4js、bunyan 和 winston,并决定使用 winston 来获得最多的 npm 每月下载量。
我要设置的是自定义记录器,我将能够使用logger.debug(...) 在开发环境中使用它,它不会在生产环境中记录任何内容。这对我有帮助,所以当我在开发环境中时,我不需要写任何东西,因为我会看到所有的输出。
这就是我现在拥有的:
var level = 'debug';
if (process.env.NODE_ENV !== 'development'){
level = 'production'; // this will never be logged!
}
var logger = new winston.Logger({
transports: [
// some other loggings
new winston.transports.Console({
name: 'debug-console',
level: level,
prettyPrint: true,
handleExceptions: true,
json: false,
colorize: true
})
],
exitOnError: false // don't crush no error
});
当我尝试记录 JavaScript Object 或 Javascript Array 时出现问题。对于Object,我需要使用toJSON(),对于Array,我首先需要JSON.stringify(),然后是JSON.parse()。
一直写这些方法并不好,只是为了记录我想要的东西。此外,它甚至对资源都不友好,因为这些格式化方法需要在 logger.debug() 意识到它在生产中并且它不应该首先记录它之前执行(基本上,它是在函数调用之前评估参数)。我只是喜欢老式的 console.log() 记录 JavaScript 对象和数组。
现在,当我写这个问题时,我发现有一种方法可以为每个winston transports 对象描述custom format。是这样做的方式,还是有其他的方式?
【问题讨论】:
标签: javascript arrays node.js logging winston