Как отобразить вывод в чистом читаемом формате в node js? - PullRequest
1 голос
/ 04 февраля 2020

Я новичок в node js. Я написал скрипт, который порождает 5 дочерних процессов и захватывает из них журнал. На данный момент журнал выглядит как беспорядок.

Screen shot of current output

Но я хочу отображать вывод в более чистом формате, как будто каждая строка используется повторно, а данные заносятся в журнал рядом с идентификатором процесса. как то так: enter image description here

ниже мой код:

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)
}

Ответы [ 2 ]

1 голос
/ 04 февраля 2020

Вы ищете Последовательности управления клеммами VT100 . Эти последовательности позволяют перемещать курсор или окрашивать текст .

Пример

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

Последовательность \x1B[1A на начальных ходах курсор на одну строку вверх и, следовательно, текст после него перезаписывает предыдущий текст. Результат выглядит следующим образом:

Line 1
Again line 2

Для получения дополнительных последовательностей, посмотрите часть страницы о движении курсора .

0 голосов
/ 13 февраля 2020

Наконец-то я нашел решение. Поскольку мне нужно собирать данные из разных процессов и аккуратно их отображать, я начал использовать диспетчер процессов pm2, он делает гораздо больше, чем просто консольный журнал процессов. для тех, кто сталкивается с той же проблемой, пожалуйста, проверьте этот узел пакет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...