2016-08-19 7 views
0

NodeJを使用してゲームを行っていて、古いconsole.log出力にアクセスすることが非常に役立つことに気付きました。メカニックと計算はやや複雑になります。後で検索してデータ解析を行い、修正子(バトルメカニクス)の正しい値を見つけることができればうれしいです。同時に、私はconsole.logをコンソールにも見たいと思っています。コンソールログをファイルに傍受するNodejs


私は(Thisを参照)、これは通常のJavaScriptで可能ではないですけど、私は、NPMはログを傍受して、サーバー上のファイルにそれらをログに記録するいくつかの方法のパッケージを持っていた期待していました。何かご意見は?

+0

最終目標は、ファイルにstdout *と*書き込みをすることです。 'console.log'をキャッチしようとするのではなく、ファイルとstdoutに書き込む独自のログメソッドを作成するだけです。 * nix環境にいる場合は、アプリケーションを起動するときに 'tee'を使用してください。 – dvlsg

+0

また、あなたのプログラムを実行するためにforeverのようなプログラムを使うこともできます。それは、console.logとconsole.errの出力をファイルに自動的にリダイレクトします。 – jfriend00

答えて

2

ようにconsole.log傍受することができます。 Winstonは独自のロガーを定義し、のトランスポート(トランスポートはこれらのログラインで何をするのか)を指定できるロギングライブラリです。あなたの場合、2つのトランスポートstdoutとログファイルを持つロガーを定義することができます。例は、(Winston documentationに触発さ):

const winston = require('winston'); 

let logger = new (winston.Logger)({ 
    transports: [ 
     new (winston.transports.Console)(), 
     new (winston.transports.File)({ filename: 'somefile.log' }) 
    ] 
}); 

logger.info('hello, world!'); 

あなたは上記のコードを実行すると、コンソール内とsomefile.logでログが表示されます。

1

あなたは同時にstdoutに、ファイルにログを記録するようにNPMのオプションがWinston可能性がありそう

var cl = console.log 

console.log = function(...args){ 
    // your custom logging logic here 
    cl.apply(console, args) 
} 
+0

またはhttp://stackoverflow.com/a/38552911/6121703 –