Serilog SelfLog没有输出任何东西

时间:2016-09-20 22:02:17

标签: c# .net 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();
}

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

1 个答案:

答案 0 :(得分:1)

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

  1. 如果您正在使用全局Log对象,请确保您确实在发送内容。 Serilog对请求进行排队并将其全部发送给您:

    Log.CloseAndFlush();

    否则,将不会记录任何内容。请确保在最后执行此操作,否则记录器将关闭(Serilog's Lifecycle documentation)。

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

  2. 通过强制一个来尝试查看Serilog是否实际上显示了错误。只需删除连接字符串中的一个字符或类似的字符,以查看Serilog的异常是否出现在控制台中。