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

moj*_*vak 7 serilog

我正在尝试编写带有输出到日志的单元测试 - Serilog。但是当我在 Visual Studio(测试资源管理器)中调试它们时,我在控制台中看不到 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");
  }

}
Run Code Online (Sandbox Code Playgroud)

控制台中既不显示“记录器已初始化”,也不显示“测试”。

我正在使用“Serilog.AspNetCore”和“Serilog.Sinks.Console”

moj*_*vak 18

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

您必须将包Serilog.Sinks.Debug此处)包含到您的项目中并使用WriteTo.Debug().

  • 这对我有用,但我不必添加调试包,只需将“调试”添加到我的 appsettings(.net 核心)中的“WriteTo”部分 (2认同)
  • 作为参考,当将 debug 添加到 serilog json 配置文件时,它只是一个名称/值设置: `"WriteTo": [ { "Name": "Debug" }, { "Name: "Console", "Args": 。 .. } ]`。换句话说,只需将接收器的名称添加到数组中;不需要任何参数/配置。 (2认同)