2017-12-05 20 views
2

は、私が殺すプログラムは、おそらく、その出力は標準出力としてここでは捕捉できない子プロセスを開始気づいNode.jsでコンソール出力をキャプチャできますか?私が最初にプロセスを強制終了しようとしています

exec = require('child_process').exec; 
exec('kill xxx', function(error, stdout, stderr) { 
    if (error) { 
     console.log('exec error: ', error); 
    }else{ 
     console.log(stdout) 
    } 
}); 

で実行しました。

私はこれらのコンソールの出力をキャプチャすることができますが、これはコードとはあまり関係がないようです。

+4

の可能性のある重複した[ノードは:代わりに、コンソールのファイルにログ](https://stackoverflow.com/questions/8393636/node-log-in-a-file-of-the-console) –

答えて

3

盗まれた:Node: log in a file instead of the console

var fs = require('fs'); 
var util = require('util'); 
var log_file = fs.createWriteStream(__dirname + '/debug.log', {flags : 'w'}); 
var log_stdout = process.stdout; 

console.log = function(d) { // 
    log_file.write(util.format(d) + '\n'); 
    log_stdout.write(util.format(d) + '\n'); 
}; 

回答#2 このメッセージがいうだけのLinuxシステム自体をCONSOLE.LOGによって作成されていません。これを捕まえる方法?私はあなたがそうのようなFSで何かを行うことができるはずだと思う

...

var fs = require('fs'); 
    var util = require('util'); 
    var log_file = fs.createWriteStream(__dirname + '/debug.log', {flags : 'w'}); 
    var log_stdout = process.stdout; 

const command = 'node your_node_script'; //Whatever you would run in terminal 

cp.exec(command, (error, stdout, stderr) => { 
    if(error) { 
     log_file.write(error); 

    } 
    if(stdout) { 
     log_file.write(stdout); 
    } 
    if(stderr) { 
     log_file.write(stderr); 
    } 
}); 
+0

ええ、問題があります。コンソール出力はconsole.logで作成する必要はありません。例えば。私がプロセスを殺したときに2秒待ってから、コンソールは "xxx terminated"というメッセージを生成します。このメッセージは、Linuxシステム自体ではなくconsole.logによって作成されます。これを捕まえる方法? –

+0

試しに提案を付けて答えを更新しました。 –

関連する問題