【问题标题】:Logs created with log4net are getting mixed when running tests in parallel并行运行测试时,使用 log4net 创建的日志变得混杂
【发布时间】:2017-07-20 16:20:03
【问题描述】:

我有一个 NUnit 测试,它使用 log4net 并生成一个不错的日志,如下所示:

[2017-07-20 INFO] Test children 00: Started
[2017-07-20 INFO] Test children 00: Log line 1
[2017-07-20 INFO] Test children 00: Log line 2
[2017-07-20 INFO] Test children 00: Log line 3
[2017-07-20 INFO] Test children 00: Completed

如果我创建此测试的多个子项(使用 TestCaseSource)并并行运行它们,那么日志会变得很难看,来自不同测试子项的行会混合在一起。

我希望看到这样的内容(请注意来自测试子项的所有日志都归为一组)

[2017-07-20 INFO] Test children 00: Started
[2017-07-20 INFO] Test children 00: Log line 1
[2017-07-20 INFO] Test children 00: Log line 2
[2017-07-20 INFO] Test children 00: Log line 3
[2017-07-20 INFO] Test children 00: Completed
[2017-07-20 INFO] Test children 01: Started
[2017-07-20 INFO] Test children 01: Log line 1
[2017-07-20 INFO] Test children 01: Log line 2
[2017-07-20 INFO] Test children 01: Log line 3
[2017-07-20 INFO] Test children 01: Completed

实际上我得到了这样的东西(请注意来自不同测试孩子的日志是混合的)

[2017-07-20 INFO] Test children 00: Started
[2017-07-20 INFO] Test children 01: Started
[2017-07-20 INFO] Test children 00: Log line 1
[2017-07-20 INFO] Test children 01: Log line 1
[2017-07-20 INFO] Test children 00: Log line 2
[2017-07-20 INFO] Test children 01: Log line 2
[2017-07-20 INFO] Test children 01: Log line 3
[2017-07-20 INFO] Test children 00: Log line 3
[2017-07-20 INFO] Test children 01: Completed
[2017-07-20 INFO] Test children 00: Completed

有没有办法配置 log4net 以保持来自一个线程的日志在一起?

【问题讨论】:

    标签: nunit log4net log4net-configuration


    【解决方案1】:

    我会避免在单元测试期间依赖外部组件进行日志记录。最好避免在单元测试期间依赖任何外部依赖项,因为这意味着您的测试不会与被测单元隔离。

    如果您为被测单元提供ILog,而不是提供 log4net 实现,请提供可能只写入控制台的存根实现(Console.WriteLine 等)。在测试期间写入控制台的所有内容都将在测试后可见并与该测试相关联。

    如果您出于某种原因必须使用 log4net,请在 log4net 配置中使用 ConsoleAppender 而不是 FileAppender

    【讨论】:

    • 使用 Console.WriteLine 将消息输出到正在运行的第一个测试,使用 ILog 时会改变吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多