【问题标题】:Serilog does not produce expected jsonSerilog 不会产生预期的 json
【发布时间】:2015-02-11 06:11:51
【问题描述】:

我有以下代码。

Serilog.ILogger logger = Serilog.Log.Logger;
logger = new LoggerConfiguration()
   .WriteTo.Sink(new FileSink(@"c:\temp\mylogs.txt", new JsonFormatter(), null)).MinimumLevel.Debug() 
   .CreateLogger();
var newType = new MyType() { Game = "Poker", HasValue = false, Name = "Dave", TimeOfEntry = DateTime.Now.AddDays(-1) };
logger.Debug("This is the new type {NewType} generated at {Time}", newType, DateTime.Now);

日志文件显示如下

{"Timestamp":"2015-02-11T00:53:51.8501574-05:00","Level":"Debug","MessageTemplate":"This is the new type {NewType} generated at {Time}","Properties":{"NewType":"ConsoleTestApp.MyType","Time":"2015-02-11T00:53:51.8491563-05:00"}}

日志文件输出中没有意义的部分是这样的:

{"NewType":"ConsoleTestApp.MyType", ...

我期待这样的事情。

{"NewType": {Game = "Poker", HasValue = false, Name = "Dave", ...

我是不是做错了什么?

【问题讨论】:

    标签: c# json serilog


    【解决方案1】:

    默认情况下,Serilog 会将ToString() 任何未知类型传递到消息模板中。

    要激活 Serilog 所谓的“解构”(即序列化),您需要在属性名称前添加 @ 符号:

    logger.Debug("This is the new type {@NewType} generated at {Time}", newType, DateTime.Now);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-26
      • 1970-01-01
      • 2013-12-20
      • 1970-01-01
      • 2015-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多