2012-03-19 2 views
0

これは基本的なものですが、動作させることができません。Nodejsのファイルにstdoutを配管するための基本的な設定を取得するにはどうすればよいですか?

var access = require('fs').createWriteStream('logs/test.access.log', { flags : 'a' }); 

process.stdout.pipe(access); 

私はこれをやった後にconsole.log()を使用する場合、そのメッセージはtest.access.logに書き込まれないことを仮定していますか?私はエラーはありませんが、ファイル内に何も入っていないので、誰かがストリームを理解し、上記のようにstdoutからログファイルに書き込むのを手助けできるかどうかは疑問です。

ありがとうございます!

+0

ノードを使用していますか?フレームワークはありませんか? – s84

+0

フレームワークなし、ノードのみ。私はそれを理解するために非常に基本的な例を取りたいと思います。そして、必要があればそこからwinstonのようなロガーに目を向けるつもりです。 – jimlamiell

+0

http://stackoverflow.com/questions/2496710/nodejs-write-to-file – s84

答えて

0

おそらく、ストリームのバッファがディスクにフラッシュされる前にNode.jsアプリケーションが終了している可能性があります。これはおそらくプロセスのstdoutをファイルにパイプしているためで、 Node.jsがプロセスのクリーンアップを開始した後にstdoutは通常まで閉じてフラッシュしないためです。

コードの最後にaccess.destroySoon();を貼り付け、Javascriptイベントループを終了する前にディスクにデータをフラッシュするかどうかを確認してください。

関連する問題