簡體   English   中英

我可以在Node.js中捕獲控制台輸出嗎?

[英]Can I capture the console output in 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)
    }
});

我注意到kill程序可能啟動了一個子進程,在此無法將其輸出捕獲為stdout。

因此,我通常可以捕獲這些似乎與代碼不太相關的控制台輸出嗎?

被盜: 節點:登錄文件而不是控制台

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);
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM