【问题标题】: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");
}
}
}