如何在 Visual Studio 单元测试中将 Serilog 输出写入控制台?

How to write Serilog output to console in Visual Studio Unit Tests?

我正在尝试编写输出到日志的单元测试 - Serilog。 但是当我在 Visual Studio (Test Explorer) 中调试它们时,我无法在控制台中看到 Serilog 输出。

有什么想法吗?

public abstract class AbstractTest
{  

  static AbstractTest()
  {
    var loggers = new LoggerConfiguration()
      .MinimumLevel.Verbose()
      .Enrich.FromLogContext();

    loggers.WriteTo.Logger(logger => logger
      .WriteTo.Console(restrictedToMinimumLevel: LogEventLevel.Verbose));

    Log.Logger = loggers.CreateLogger();
    Log.Logger.Information("Logger is initialized");
  }

}

[TestClass]
public class DemoTest : AbstractTest
{
  private static ILogger log = Log.ForContext(typeof(DemoTest));

  [TestMethod]
  public void DemoTst()
  {
    log.Debug("test");
  }

}

控制台中既没有显示 'Logger is initialized' 也没有显示 'test'。

我正在使用 'Serilog.AspNetCore' 和 'Serilog.Sinks.Console'

好的,我找到了解决方案。

您必须将包 Serilog.Sinks.Debug (here) 包含到您的项目中并使用 WriteTo.Debug() 初始化它。