【问题标题】:How to display output in clean readable format in node js?如何在节点 js 中以清晰可读的格式显示输出?
【发布时间】:2020-02-04 09:19:54
【问题描述】:

我是节点 js 的新手。我编写了一个脚本,它产生 5 个子进程并从中捕获日志, 到目前为止,日志看起来很乱。

但我想以更清晰的格式显示输出,例如每行都被重用,数据被记录在进程 ID 旁边。 像这样的东西:

下面是我的代码:

var state = "node stealth.js ";
var exec = require('child_process').exec;


workers = 5

  

p_list = [];

for (var i = 0; i < workers; i++) {
    (function(i){
        var child = exec(state+'user'+i);
        console.log('started Worker '+i)
        // Add the child process to the list for tracking
        p_list.push({process:child, content:""});

        // Listen for any response:
        child.stdout.on('data', function (data) {

            console.log(child.pid, data);
            p_list[i].content += data;
            process.stdout.cursorTo(i);
            process.stdout.clearLine();
            process.stdout.write(child.pid+data);
            process.stdout.write("\n"); // end the line
            
        });

        // Listen for any errors:
        child.stderr.on('data', function (data) {
            console.log(child.pid, data);
            p_list[i].content += data;
        }); 

        // Listen if the process closed
        child.on('close', function(exit_code) {
            console.log('Closed before stop: Closing code: ', exit_code);
        });
    })(i)
}

【问题讨论】:

    标签: node.js concurrency console-application puppeteer


    【解决方案1】:

    您正在寻找VT100 Terminal Control Escape Sequences。这些序列允许移动光标或color the text

    示例

    console.log('Line 1');
    console.log('Line 2');
    console.log('\x1B[1AAgain line 2');
    

    开头的\x1B[1A 序列将光标向上移动一行,因此它后面的文本会覆盖前一个文本。结果如下所示:

    Line 1
    Again line 2
    

    更多序列,请查看页面中关于cursor movement的部分。

    【讨论】:

      【解决方案2】:

      最后我想出了一个解决方案。 由于我需要从不同的进程收集数据并以简洁的方式显示,我开始使用 pm2 进程管理器,它不仅仅是来自进程的控制台日志。 对于遇到同样问题的任何人,请查看此节点package

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-30
        • 1970-01-01
        • 2016-01-23
        • 2012-10-21
        • 1970-01-01
        相关资源
        最近更新 更多