【问题标题】:Output logs to Xunit using Serilog Static Logger使用 Serilog 静态记录器将日志输出到 Xunit
【发布时间】:2020-03-13 18:34:47
【问题描述】:

我在我的项目中使用 serilog 和静态记录器方法 - 能够在我的类库上调用 Log.X 而不是到处注入记录器类,这很好也很容易。

但是,当涉及到单元/集成测试时,如果测试失败,那么查看类库中的错误日志将非常有益(对于集成测试更是如此)。

因为我没有将 ILogger 注入到我的类中(由于使用了静态记录器),所以我无法创建将输出写入测试日志的模拟测试记录器。

是否有人设法使用 Serilog 全局(静态)记录器将消息输出到 XUnit?

【问题讨论】:

标签: c# unit-testing logging xunit serilog


【解决方案1】:

Serilog.Sinks.XUnit nuget 包可以轻松实现此目的。在您的项目中引用 nuget。然后就可以在测试中使用静态记录器了:

using Serilog;
using Xunit;
using Xunit.Abstractions;

namespace XunitToSerilog
{
    public class SampleTest
    {
        public SampleTest(ITestOutputHelper output)
        {
            Log.Logger = new LoggerConfiguration()
            // add the xunit test output sink to the serilog logger
            // https://github.com/trbenning/serilog-sinks-xunit#serilog-sinks-xunit
            .WriteTo.TestOutput(output)
            .CreateLogger();
        }

        [Fact]
        public void Test1()
        {
            Log.Information("goes to test output");
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-14
    • 2021-07-21
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多