我可以在Node.js中捕获控制台输出吗?

时间:2017-12-05 16:34:01

标签: javascript node.js kill

我试图先杀死一个进程,我用

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

我注意到kill程序可能启动了一个子进程,其输出无法在此处作为stdout捕获。

所以我通常可以捕获这些与代码不太相关的控制台输出吗?

1 个答案:

答案 0 :(得分:4)

被盗: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 此消息不是由console.log创建的,而只是Linux系统本身创建的。怎么抓住这个?

我认为你应该可以用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);
    }
});