2015-02-11 59 views
3

我有以下代碼。Serilog不會產生預期的json

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", ... 

我做錯了什麼?

回答

7

默認情況下,Serilog會將ToString()任何未知類型傳遞到消息模板中。

要激活Serilog所謂的「解構」(即序列化),你需要預先at符號@屬性名稱:

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

感謝,這是它! – SamDevx 2015-02-12 02:40:55

相關問題