[英]Wrapper over bunyan logging library
我知道這是一個非常抽象的問題,但我不知道在哪里/如何開始。
我在我的應用程序中使用bunyan作為日志庫。 這是用於記錄內容的示例語法:
const log = bunyan.createLogger({...});
log.info(...);
log.error(...);
我想創建一些包裝器,以便每次調用log.<something>()
,它都會從我的模塊執行功能。 具體來說,我想用log.<something>()
生成的對象做一個curl
請求。
我一直在尋找到墨西拿和GELF流這是周圍的包裝bunyan
,但我真的沒有發現,處理記錄事件或任何東西,這將使我的如何實現我的想法的例子任何特定代碼。
我正在考慮將事件發射器添加到bunyan
,我可以在我的模塊中監聽,但這需要我到我的lib的分支,我不想那樣做。 所以,現在我沒有想法了。
您可以通過創建可寫流來擴展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 ) { ... }
方法代碼,處理日志行本身。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.