2016-04-17 4 views
1

にリダイレクトしてください。これは簡単な質問ですが、私はその周りに気を配らないようです。すべての私のconsole.log出力をファイルにリダイレクトする簡単な方法はありますか? console.logは、提供されるオブジェクトの形式を整え、簡単なJSONableオブジェクトではないオブジェクトと適切にやり取りします。console.logの出力をファイル

私は

var myerr = new Error('There has been an error'); 
console.log(myerr); 

を行う場合、私はちょうど

process.stdout.write(JSON.stringify(myerr)); 

をすれば、私は

{} 
を取得している間たとえば、私は

[Error: There has been an error.] 

を取得210

そして私は、私は上記のトリックのいずれかと、その引数にループし、出力をファイルにリダイレクトする機能と私のconsole.logを上書きもしそうなら、私は

Error: There has been an error 

を取得

process.stdout.write(myerr.toString()); 

行う場合ログはまったく同じではありません。

console.logは、コンソールに出力する前に提供されているオブジェクトを処理するために何をしますか?すべてのオブジェクトに対して.toString()が呼び出され、[]でラップされ、すべてがprocess.stdout.writeに送信されますか?それとも、他の種類の前処理をしていますか?

答えて

3

Consoleのコードが読み:あなたは、単に

const util = require('util'); 
process.stdout.write(util.format.apply(null, arguments) + '\n'); 
+0

は、ノード/ console.jsの完全なコードは[githubの]にある[1] [1]:https://github.com/nodejs/node/blob/master /lib/console.js – nicandris

4

を行うことができます

Console.prototype.log = function() { 
    this._stdout.write(util.format.apply(null, arguments) + '\n'); 
}; 

私はLinuxのI/Oリダイレクションを使用するための最も簡単な方法だと思います。 ただ、この方法でアプリケーションを実行します。あなたのアプリから

node app.js > log.txt 

すべての出力メッセージが

関連する問題