【发布时间】:2017-02-06 13:11:40
【问题描述】:
我有这个结构:
public class LogRequestParameters
{
public string RequestID { get; set; }
public string Type { get; set; }
public string Level { get; set; }
public string DateTime { get; set; }
public string MachineName { get; set; }
public Request Request { get; set; }
}
public class Request
{
public string URLVerb { get; set; }
}
我正在为日志写下一行:
Serilog.Log.Information("{@LogRequestParameters}", logRequestParameters);
我得到以下输出:
LogRequestParameters { RequestID: "bf14ff78-d553-4749-b2ac-0e5c333e4fce", Type: "Request", Level: "Debug", DateTime: "9/28/2016 3:12:27 PM", MachineName: "DXBKUSHAL", Request: Request { URLVerb: "GET /Violation/UnpaidViolationsSummary" } }
这不是一个有效的 json。 “LogRequestParameters”(类名)即将开始。 “请求”(物业名称)来了两次。 如何记录有效的 json?
【问题讨论】:
-
我推荐 Newtonsoft 的 Json.NET。
-
使用 Json.NET,您可以使用
var json = JsonConvert.Serialize(logRequestParameters);序列化对象的任何实例 -
@ThePerplexedOne:你不能用序列化框架替换日志框架,如果我没记错的话,Serilog 无论如何都依赖于 Json.NET。
-
Serilog 是一个支持结构化错误日志的日志框架。该结构的持久化方式取决于所使用的特定 Sink。你能展示一下你是如何初始化 Serilog 的吗?这将有助于了解您正在使用哪个接收器。
-
@MartinLiversage 不,Serilog 不使用 JSON.NET(它 100% 无依赖,除了基本的 .NET Framework/Core 包:-))
标签: c# json serilog structured-data