我实际上是在尝试解决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也没有输出任何错误信息。我甚至故意弄乱连接字符串只是为了让它输出任何东西而不是骰子。有什么想法吗?
答案 0 :(得分:1)
我知道这是一个非常老的问题,但是我花了几天的时间来处理类似的问题,所以我将在这里留下一些建议。
如果您正在使用全局Log
对象,请确保您确实在发送内容。 Serilog对请求进行排队并将其全部发送给您:
Log.CloseAndFlush();
否则,将不会记录任何内容。请确保在最后执行此操作,否则记录器将关闭(Serilog's Lifecycle documentation)。
如果您不使用全局对象,则在处置日志对象后应执行此 。
通过强制一个来尝试查看Serilog是否实际上显示了错误。只需删除连接字符串中的一个字符或类似的字符,以查看Serilog的异常是否出现在控制台中。