gpt4 book ai didi

node.js - Bunyan 日志库的包装

转载 作者:太空宇宙 更新时间:2023-11-03 23:01:57 25 4
gpt4 key购买 nike

我知道这是一个非常抽象的问题,但我只是不知道从哪里/如何开始。

我正在使用bunyan作为我的应用程序中的日志库。这是用于记录某些内容的示例语法:

 const log = bunyan.createLogger({...});
log.info(...);
log.error(...);

我想创建某种包装器,以便每次 log.<something>()被调用时,它将执行我的模块中的功能。具体来说,我想做一个curl使用 log.<something>() 生成的对象进行请求.

我正在调查messinagelf-stream它们是 bunyan 周围的包装器但我并没有真正发现任何处理日志事件的特定代码或任何可以为我提供如何实现我的想法的示例。

我正在考虑将事件发射器添加到 bunyan我可以在我的模块中监听,但这需要我对库进行 fork ,而我不想这样做。所以,现在我没有主意了。

最佳答案

您可以通过创建writeable stream来扩展bunyan的功能:

const bunyan = require( "bunyan" ),
stream = require( "stream" );

class MyStream extends stream.Writable {

/**
* When we have a record from bunyan
*/
write( record ) {
console.log( "-----> ", record );
return true;
}

}

/** Options for the bunyan instance */
const options = {
name : "my-logger",
serializers : bunyan.stdSerializers,
level : "trace",
streams : [
{ type : "stream", stream : process.stdout, level : "trace" },
{ type : "raw", stream : new MyStream(), level : "trace" }
]
};

/** Create the bunyan logger */
const log = bunyan.createLogger( options );

log.info( { foo: "bar" }, "test" );

这将输出:

{"name":"my-logger","hostname":"localhost","pid":68694,"level":30,"foo":"bar","msg":"test","time":"2017-08-11T11:31:40.136Z","v":0}
-----> { name: 'my-logger',
hostname: 'localhost',
pid: 68694,
level: 30,
foo: 'bar',
msg: 'test',
time: 2017-08-11T11:31:40.136Z,
v: 0 }

您可以用您想到的任何内容替换 write( record ) { ... } 方法代码,处理日志行本身。

您还可以在bunyan documentation中阅读有关流的更多信息。

关于node.js - Bunyan 日志库的包装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45633133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com