我正在使用 Serilog、NUnit 和 Rider。我正在从 Rider Unit Tests 窗口运行单元测试,测试失败后我会看到结果和堆栈跟踪。但我想查看我的应用程序的 serilog 日志,以获取有关正在发生的情况的更多信息,如何打开它?
我尝试添加 Serilog.Sinks.NUnit 但没有成功
取自
TestContext.Progress
的 NUnit 文档(参见此处):
获取一个 TextWriter,用于发送用于立即显示的正常(非错误)输出。
因此您的日志必须转发到
TestContext.Progress
。根据日志的创建方式,方法可能会有所不同。
假设您将
Microsoft.Extensions.Logging.ILogger
与 Serilog 结合使用,您可以创建一个像这样的自定义记录器并在测试中使用它:
public class ImmediateLogger : Microsoft.Extensions.Logging.ILogger
{
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception? exception, Func<TState, Exception?, string> formatter)
{
TestContext.Progress.WriteLine($"{logLevel.ToString()}: {formatter(state, exception)}");
}
// remaining things left out for brevity
}