2015-08-03 3 views
1

Я пытаюсь создать лог консоли что-то вроде этого:прилагая к последней строке вошел с Уинстоном

2015-08-03T08:17:13.730Z - info: Doing task A... ✓ 
2015-08-03T08:19:13.730Z - info: Doing task B... 

Так что, как только задача будет завершена, клещ появляется в конце строки.

Мой код (в основном) синхронное, так что в теории что-то, как это должно работать:

log.info('Doing task A'); 
taskA(); 
log.appendLastLine('✓'); 

Есть ли способ сделать это с помощью Уинстона? Или любой другой регистратор NodeJS? Есть несколько вещей, которые являются асинхронными, но я могу справиться с случайной испорченной линией журнала, если это произойдет.

ответ

2

Вы можете использовать базовый объект стандартный вывод и вручную контролировать разрывы строк:

process.stdout.write('Doing task A'); 
taskA(); 
process.stdout.write('✓ \n'); 

Более того, вы можете событие перезаписать сообщения в той же строке, создавая обратный отсчет времени на одной строке, добавив «\ г» в конце ,

process.stdout.write('Task A status: ' + mystatus + ' % \r'); 

Некоторого лесозаготовительный ЛИЭС также поддерживает такой режим, но это основна обертка для стандартного вывода, но вы можете использовать другие функции тоже, как легко измерение Таски() время выполнения:

var logger = require('devmetrics-core')(); 
logger.info('Measure function execution time'); 
taskA = logger.measureTimeWrap(taskA, 'taskA'); 
Смежные вопросы