在bunyan日志logging中格式化输出
我正在试验节点bunyan模块。 作为其中的一部分,我想知道关于bunyan的一些事实..
-
bunyan是否有助于改变在bunyan日志上印刷内容的顺序。 例如默认情况下,时间戳会打印在最后…有没有办法在开始时打印? 如果是,请与我分享..
-
Bunyan日志将通过指定应用程序中的pathlogging到文件中。 而不是在应用程序中指定,我们可以指定属性文件中的其他地方。如果是这样,请分享如何做到这一点…
对于#1,我假设你正在使用bunyan-cli。 你可以改变一些东西,但我不认为你可以改变顺序。 它有一个格式化程序,可以使用node index.js | bunyan -o short
node index.js | bunyan -o short
的改变你的输出:
[2015-05-13T22:55:28.613Z] INFO: App/sampleObject/77405 on host.local: User logged in (reqId=1, user=frank) [2015-05-13T22:55:28.615Z] INFO: App/sampleObject/77405 on host.local: User queried DB (reqId=1, user=frank)
对此:
22:55:15.830Z INFO App/sampleObject: User logged in (reqId=1, user=frank) 22:55:15.832Z INFO App/sampleObject: User queried DB (reqId=1, user=frank)
我发现更可读。
对于#2,你需要从configuration文件中设置一个日志实例作为你的应用程序的开始。 如下所示:
var bunyan = require('bunyan'); var configOptions = require('../path/to/config.json'); var logger = bunyan.createLogger( configOptions ); bunyan.log = logger;
加载一个configuration文件有更好的策略,但是一个JSON文件可以工作。 如果你想设置process.stdout
stream,你可能需要比纯JSON所能提供的更多的选项,所以在这种情况下config.js
文件会更好。
在其他文件中,您可以像下面这样访问日志:
var log = require('buynyan).log; log.info('This is another file.`);
请确保在需要其他文件之前configurationlogging器,否则日志logging对象log
将无法正确初始化。
编辑,注意:您也可以dynamic添加stream到bunyanlogging器。 这不在他们的文档中(所以可能需要您自担风险),但对于给定的logger
,您可以调用logger.addStream( streamConfigObj )
,其中streamConfigObj
是您在stream
或stream:[]
使用的相同对象stream:[]
to .createLogger