0

我正在尝试使用 winston 记录器,但与文件传输一起使用时似乎有一种奇怪的行为。也许这是我想念的东西,我无法弄清楚。我创建了一个简单的例子来说明这个问题。它使用摩卡咖啡进行测试。

var log = require('winston')
log.add(log.transports.File, { filename: 'output.log' });

describe('Logger', function() {
        it('should save the 1st message', function(done) {
            log.info('1: this is the 1st message', function() {
                console.log('done 1')
                done()
            })
        })
        it('should save the 2nd message', function(done) {
            console.log('before test 2')
            log.info('2: this is the 2nd message', function() {
                console.log('done 2')
                done()
            })
        })
        it('should save the 3rd message', function(done) {
            log.info('3: this is the 3rd message', function() {
                console.log('done 3')
                done()
            })
        })
    }
)

第一条消息保存在 output.log 文件中,但不保存其他消息。实际上,只调用了第一个测试的回调。已'before test 2'打印,但'done 2'不是...并且第二条消息也未保存。

但是,当我评论第二行 ( log.add(log.transports.File,...) 时,它的行为正常,在控制台中显示所有消息。我错过了什么还是一个错误?

我使用的winston 版本是0.7.1。

提前致谢。

ps:这console.log只是为了测试测试;-)

4

1 回答 1

0

我遇到了完全相同的问题。这显然是 mocha 和 winston 文件记录的奇怪副作用。

如果已经完成了以下测试并替换了全局描述,并且它使用我自己的函数运行:

  describe = function(name, func) {
    return func();
  };

  it = function(name, func) {
    return func(function() {});
  };

然后直接用node执行测试功能。在这种情况下,winston 的输出与预期的一样。当再次使用 mocha 执行相同的测试文件时,您又会丢失日志条目。

似乎使用 mocha 执行时不会触发 winston 文件刷新。

于 2013-05-31T15:00:12.327 回答