c# - 如何使用 Serilog 以有效的 json 格式记录复杂对象?

标签 c# json serilog structured-data

我有这样的结构:

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/

相关文章:

c# - SHA256CryptoServiceProvider 不符合 FIPS 标准?

java - 使用 Jackson 和 Json 时出错

json - 在 activiti bpmn 中解析 JSON 字符串

c# - 如何使用 serilog 自定义异常输出

sql-server - 清除 SQL 数据库中的日志 - Serilog

c# - 读取 serilog 的 appconfig 文件

c# - 算法性能

c# - 如何判断SQL查询是否过于复杂?

c# - 可以在 .Net 4.0 中使用 Tuple 的实际示例?

ios - 在 RubyMotion 中解析 JSON 时出错