我有这样的结构:
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?
最佳答案
假设您正在使用文件、滚动文件或控制台接收器,您需要指定一个JsonFormatter
:
Log.Logger = new LoggerConfiguration()
.WriteTo.RollingFile(new JsonFormatter(), "myapp-{Date}.json")
.CreateLogger();
Serilog 支持几种不同的 JSON 格式;见this post用于讨论一些替代方案。
关于c# - 如何使用 Serilog 以有效的 json 格式记录复杂对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39749469/