在bunyan日志logging中格式化输出

我正在试验节点bunyan模块。 作为其中的一部分,我想知道关于bunyan的一些事实..

  1. bunyan是否有助于改变在bunyan日志上印刷内容的顺序。 例如默认情况下,时间戳会打印在最后…有没有办法在开始时打印? 如果是,请与我分享..

  2. 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.stdoutstream,你可能需要比纯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是您在streamstream:[]使用的相同对象stream:[] to .createLogger