我可以在 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 程序可能启动了一个子进程,这里无法将其输出捕获为标准输出。
那么我可以捕获这些看起来与代码不太相关的控制台输出吗?
被盗: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);
}
});
我一开始试图杀死一个进程,我用
执行exec = require('child_process').exec;
exec('kill xxx', function(error, stdout, stderr) {
if (error) {
console.log('exec error: ', error);
}else{
console.log(stdout)
}
});
我注意到 kill 程序可能启动了一个子进程,这里无法将其输出捕获为标准输出。
那么我可以捕获这些看起来与代码不太相关的控制台输出吗?
被盗: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);
}
});