【问题标题】:How to fetch output from console.log [duplicate]如何从 console.log 获取输出 [重复]
【发布时间】:2018-06-02 22:49:03
【问题描述】:

我在 Stack Overflow 上的一些问题中看到有 examples、示例代码或 sn-ps。比如下面这个:

console.log(1, 2, 3)

通过运行上面的代码 sn-p 你会看到这样的:

我目前正在处理 node.js 中的一些东西,它还需要从 console.logs 获取输出。我发现 Stack Overflow 能够做到这一点令人着迷,而我什至不知道他们是如何做到这一点的。

如果有人能给我发送一个链接,我可以阅读并了解如何从控制台 API 获取数据,我将不胜感激。

干杯,
理查德

附:如果有人可以编辑这篇文章以显示图像,我将非常感激。

编辑
我正在做的项目是一个 Electron 应用程序。它同时使用 node.js 进程和 Electron BrowserWindow。

它使用我正在处理的记录器,需要从 console.log 获取数据

一些用例可能如下所示:

console.log('%d is cool', User.firstName)
// => "Jason is cool"

console.log('User ID:', User._id)
// => A5FFE

console.log('%cUser connected!', 'color: #00FF00')
// => User connected!
// In green text.

【问题讨论】:

    标签: javascript console console.log


    【解决方案1】:

    你可以用你自己的函数覆盖window.console.log来达到这样的效果。例如:

    const oldConsoleLog = console.log.bind(console);
    console.log = (...params) => {
      const textToDisplay = params.map(param =>
        typeof param === 'object'
        ? JSON.stringify(param)
        : param
      );
      document.body.appendChild(document.createElement('div'))
        .textContent = textToDisplay;
      oldConsoleLog(...params);
    };
    
    console.log('foo');
    console.log('bar baz');
    console.log({ prop: 'value' });
    .as-console-wrapper {
      height: 60%
    }

    【讨论】:

    • 但是话说回来,像console.log(1, 2, 3) 这样的操作只会输出1
    • 查看编辑,可以使用...将所有参数转成数组
    • 那么像console.log('%d is cool', 'Jason') 这样的操作也可以吗?
    • @iHack 要复制其所有功能,您必须编写代码以将 %s 替换为其他参数。
    【解决方案2】:

    在 nodejs 中,console.log 只是格式化您传递给它的数据,然后将其写入process.stdout,这是一个进入命令行窗口的流。要拦截它,您可以只监听该流上的事件:

    process.stdout.on("data", chunk => {
      // Do what you wanna do
    });
    

    【讨论】:

    • 如果代码在例如 nw.js 或 Electron 中执行呢?
    • @iHack I am currently working with something in node.js ...我刚刚回答了你问的问题...
    • 我正在做的事情也需要在 Electron 中得到支持,因为我的应用程序将在 Electron 浏览器和 node.js 进程中使用一个特殊的记录器。抱歉,我会编辑我的问题。
    • 编辑了我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 2016-01-15
    • 2021-09-19
    • 2020-01-21
    • 1970-01-01
    相关资源
    最近更新 更多