Serilog SelfLog 不输出任何东西

Sin*_*tic 8 .net c# logging serilog

我实际上是在尝试解决 MSSqlServer 接收器未向我的数据库表写入任何内容的问题。有人建议我连接 SelfLog 以查看发生了什么,但它实际上并没有输出任何内容,我不确定我是否遗漏了什么。这是设置方法:

public SerilogLogger()
{
    Serilog.Debugging.SelfLog.Enable(
        msg => System.Diagnostics.Trace.WriteLine(msg));

    _logger = new LoggerConfiguration()
        .WriteTo.MSSqlServer(@"Server=<MyConnectionString>", "Logs")
        .WriteTo.Trace()
        .CreateLogger();
}
Run Code Online (Sandbox Code Playgroud)

此类中的方法只是调用_logger此处设置的日志方法。我正在创建的日志正在通过跟踪接收器写入输出窗口,但没有任何内容进入数据库并且 Serilog 没有输出任何内容,更不用说任何错误了。我什至故意弄乱连接字符串只是为了让它输出任何东西而不是骰子。有什么想法吗?

JDC*_*JDC 5

我知道这是一个很老的问题,但我花了几天时间处理类似的问题,所以我会在这里留下一些建议。

  1. 如果您使用的是全局Log对象,请确保您确实在发送东西。Serilog 将请求排队并在您执行后将它们全部发送:

    Log.CloseAndFlush();

    没有这个,什么都不会被记录。确保在最后执行此操作,因为在此之后,记录器将关闭(Serilog 的生命周期文档)。

    如果您不使用全局对象,则应在处理日志对象后执行此操作。

  2. 尝试通过强制显示 Serilog 是否确实显示错误。只需删除连接字符串中的一个字符或类似的内容,即可查看控制台中是否出现 Serilog 的异常。