node.js - 从 Node.js vm 模块中的 console.log() 访问日志

标签 node.js virtual-machine

node.js vm module ,我可以在另一个 node.js 进程中执行一些 javascript。我想要实现的是能够捕获在虚拟机运行的脚本中执行的日志。

例如我想捕获“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
}

最佳答案

也许将当前控制台转发到新创建的上下文对象会更好:

let contextObj = {
    console: console
};

关于node.js - 从 Node.js vm 模块中的 console.log() 访问日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12805125/

相关文章:

virtual-machine - 无法从虚拟机连接到互联网

node.js - Mongoose :Find and filter nested array

python - 通过 Web 界面点击并运行 docker 镜像(或 VM)?

Azure VM 替换 : transfer IP address and FQDN

javascript - 将 angularjs 应用程序从 Windows 移动到 Ubuntu

ssh - Google 计算引擎 - 访问 SSH 几次后被阻止

c - 具有多个参数的 kvm super 调用

Node.js 或使用 mongodb 服务器

node.js - 与 SailsJS 的多态关联

javascript - 在 VS Code EADDRINUSE 错误上调试 Node.JS