Serilog日志异常和其他属性

时间:2020-05-07 20:48:39

标签: c# .net serilog structured-logging serilog-exceptions

我正在WCF服务应用程序中实现Serilog。在我的Global.asax中,我试图设置全局记录器以打印日志时间,线程ID,可能记录的任何异常以及事件随附的json格式的其他属性。

我的日志设置:

Log.Logger = new LoggerConfiguration()
    .Enrich.WithThreadId()
    .Enrich.WithThreadName()
    .Enrich.WithExceptionDetails()
    .Enrich.FromLogContext()
        .WriteTo.File(
            path: "\\LogFiles\\Gateway\\gateway-properties-.log", 
             rollingInterval: RollingInterval.Day, 
            outputTemplate: "{Timestamp:HH:mm} [{Level}] ({ThreadId}) {Message}{NewLine}{Exception} {Properties:j}")
    .CreateLogger();
Log.Information("Initilizing Application");

当我查看代码段中为Information事件创建的日志时,看起来像这样

16:28 [Information] (1) Initilizing Application
{}

当我尝试记录异常时:

throw new Exception("This is a forced exception");
...
catch (Exception ex)
{
    Log.Fatal("Application could not be started", ex);
}

我在日志中看到了这个

16:28 [Fatal] (1) Application could not be started
{}

我希望看到日志项中包含的异常消息和堆栈跟踪。

在另一个位置,我试图记录请求过程的成功:

Log.Information("Transaction {0} successfully processed", request.TransactionId, request); 

我看到:

16:40 [Information] (8) Transaction "the correct transaction ID" successfully processed
{}

很明显,我设置不正确或记录不正确。

具体问题

  • 问题1:配置中的任何内容是否与所需的输出冲突?
  • 问题2:Serilog是否自动包括属性的括号,即使不包括在内 与日志事件? (日志后为空的{})
  • 问题3:当我提供属性时,为什么将它们包括在内插字段中,而不包括在日志的属性部分中?
  • 问题4:我是否需要进一步配置以包括异常的详细信息?

0 个答案:

没有答案