2017-08-11 5 views
0

私はそれは非常に抽象的な質問であることを知っていますが、私はどこから始めるべきか分かりません。バンヤンロギングライブラリのラッパー

私はbunyanを私のアプリケーションのロギングライブラリとして使用しています。私はlog.<something>()が呼び出されるたびに、それは私のモジュールから機能を実行するように、ラッパーのいくつかの種類を作成したい

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

:これは何かをログに記録するためのサンプル構文です。具体的には、log.<something>()によって生成されたオブジェクトでcurlリクエストを行いたいとします。

私はmessinabunyanのラッパーですgelf-streamに探していたが、私は本当に私に私のアイデアを実現する方法の例を与えるログイベントか何かを処理する任意の特定のコードを発見しませんでした。

bunyanにイベントエミッタを追加することを考えていましたが、私のモジュールで聞くことができますが、それは私がlibのフォークを必要とするため、私はそれをしたくありません。だから今はアイデアが足りない。

答えて

2

あなたはwriteable streamを作成することにより、バニヤンの機能を拡張することができます

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