在node.js vm 模块中,我可以在另一个 node.js 进程中执行一些 javascript。我想要实现的是能够捕获在 vm 运行的脚本中执行的日志。
例如,我想捕获“foobar”日志:
var vm = require('vm')
vm.runInThisContext('console.log("foobar");', 'myfile.vm');
// how can i get the "foobar" log?
提前致谢
编辑:下面的答案效果很好,虽然有一个较短的版本:
function captureStdout(callback) {
var output = '', old_write = process.stdout.write
// start capture
process.stdout.write = function(str, encoding, fd) {
output += str
}
callback()
// end capture
process.stdout.write = old_write
return output
}