2

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

例如,每次调用 log.fatal() 时,我都想向第三方 API 发送一些东西

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

谢谢!

4

1 回答 1

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 对象的可写流,则不需要创建自己的包装器。

于 2016-05-30T19:25:55.447 回答