child.log.info('info');
child.log.debug('debug');
我使用以下命令:
node app.js | bunyan -o short -l debug
但是它只显示INFO。不显示调试。我想在控制台中显示调试消息,我做错了什么?
child.log.info('info');
child.log.debug('debug');
我使用以下命令:
node app.js | bunyan -o short -l debug
但是它只显示INFO。不显示调试。我想在控制台中显示调试消息,我做错了什么?
创建记录器时,使用level
选项设置 bunyan 发出日志消息的级别:
var log = bunyan.createLogger({ level: "debug" });
同样,使用level
选项设置子记录器将发出日志消息的级别:
var child = log.child({ level: "debug" });
在实例化时设置的这个level
选项决定了 bunyan 发出的日志消息的最低级别。
命令行开关-l
(或--level
)只是一个过滤器;它允许通过在给定级别或更高级别发出的消息。但是,它没有设置您的 bunyan 实例发出的日志消息的最低级别。
例如,假设我想要一个在"debug"
级别或更高级别发出日志消息的 bunyan 实例。我可以将以下内容放入main.js
:
var bunyan = require("bunyan");
var log = bunyan.createLogger({ level: "debug" });
log.trace("Nitty gritty info here.");
log.debug("Eek ork op.");
log.info("The Red Zone is for loading and unloading only.");
如果我从命令行运行以下命令:
node main.js | bunyan
我将在输出中看到这一点:
Eek ork op.
The Red Zone is for loading and unloading only.
请注意,我没有从命令行过滤任何内容,并且对的调用log.trace()
也没有打印任何内容。
现在,在命令行中输入:
node main.js | bunyan -l "debug"
你会得到:
Eek ork op.
The Red Zone is for loading and unloading only.
和以前一样。
现在,尝试:
node main.js | bunyan -l "trace"
您仍然会得到与以前相同的输出。
为什么?因为您的 bunyan 实例设置为在"debug"
级别或更高级别发出消息。命令行开关-l
只是一个过滤器。
最后,尝试:
node main.js | bunyan -l "info"
这一次,您只会看到:
The Red Zone is for loading and unloading only.
呼叫log.debug()
被过滤掉了。
在为不同的日志级别创建流时,创建一个用于调试的流,例如
bunyan.createLogger({
name: <name>,
streams: [{
level : 'debug',
stream : process.stdout
}]
});
使用它,您的所有调试日志都将流式传输到控制台。