2017-07-30 13 views
0

にデバッグ情報をキャプチャして、コールが必要な場合、いくつかのパッケージが見つからない理由を調べる必要があります。node.js - モジュールからのデバッグ出力をキャプチャします

モジュールで

(内部module.js)などいくつかのデバッグコールがある:

if (parent) { 
     debug('looking for %j in %j', id, paths); 
    } 

私はこのデバッグ情報をキャプチャするために何が必要ですか?

おかげ

答えて

2

debug()あなたは正しい環境変数を設定した場合、デバッグメッセージは、例えば(あなたがして、ファイルにキャプチャすることができstderrに書き込まれることを意味しutil.debuglog()を使用して作成された関数であり、 ):

EDITが
env NODE_DEBUG=module node your-app.js 2> debug.log 

:自分のアプリの中からこれらのメッセージをキャプチャするために、私はあなたが例えば、monkeypatchingに頼らあると思うconsole.error()

let error = console.error.bind(console); 
console.error = function() { 
    if (arguments[1] !== 'MODULE') { 
    return error.apply(this, arguments); 
    } 
    console.log('error log', arguments); 
}; 

このコードは、追跡したいrequire()ステートメントのいずれかの前に実行する必要があり、それは非常に堅牢ではありません(util.debuglogの実装では、これまでに変更した場合、それが壊れるかもしれません)。

+0

ありがとうございます。 node.jsアプリケーション内のstderrをキャプチャすることは可能ですか? – wmmhihaa

+1

@wmmhihaa編集を参照してください。 – robertklep

関連する問題