是否可以覆盖bunyan的日志功能?

时间:2016-05-30 13:44:12

标签: node.js bunyan

我使用bunyan.js作为我的日志记录解决方案,我想为其添加日志记录功能。

例如,我想在每次调用log.fatal()

时向第三方API发送内容

这可能吗?我查看了文档,但我没有看到任何我可以注册的事件,或任何其他解决方案。

谢谢!

1 个答案:

答案 0 :(得分:3)

Bunyan有它"溪流":https://github.com/trentm/node-bunyan#streams 每个记录器都可以写入多个流。

您可以在创建记录器对象时指定其他流,或使用addStream方法(在自述文件中未提及,但它是公共方法,记录器也在内部使用),例如:

logger.addStream({
    type: 'raw',
    stream: new MyDatadog(),
    closeOnExit: true,
    // Here you specify what level should be written to this stream.
    // For example, you can use soemthing like `logger.FATAL` here.
    level: options.level
});

然后:

function MyDatadog () {
    // initialize whatever is needed here
}

MyDatadog.prototype.write = function write (record) {
    // write record data wherever you want
    // record is an object with things like:
    // - record.what
    // - record.time
    // - record.err
};

MyDatadog.prototype.end = function end () {
    // cleanup stuff here
};

当然,如果您使用的是什么(某些数据库?),则不需要创建自己的包装器。您可以使用可写流来接受编写JS对象。