使用winston附加到最后一行

时间:2015-08-03 08:26:01

标签: node.js logging winston

我正在尝试生成这样的控制台日志:

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('✓');

有没有办法用winston做到这一点?或任何其他NodeJS记录器?有一些是异步的,但如果发生这种情况,我可以处理偶尔搞乱的日志行。

1 个答案:

答案 0 :(得分:2)

您可以使用基本的stdout对象并手动控制换行符:

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

此外,您可以通过添加' \ r'来事件覆盖同一行中的消息,在一行上创建倒计时。最后。

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

一些日志库也支持这种模式,但它基本上是stdout的包装器,但你也可以使用其他功能,比如简单测量taskA()执行时间:

var logger = require('devmetrics-core')();
logger.info('Measure function execution time');
taskA = logger.measureTimeWrap(taskA, 'taskA');