C# Serilog Network.Sink json输出格式

C# Serilog Network.Sink json输出格式,c#,.net-core,serilog,C#,.net Core,Serilog,我一直在使用Serilog登录到本地文件,它具有很好的特性,可以轻松地选择输出模板 像这样: _logger = new LoggerConfiguration() .WriteTo.File( Path.Combine(config.Value.FilePath, config.Value.FileName), outputTemplate: "[{Timestamp

我一直在使用Serilog登录到本地文件,它具有很好的特性,可以轻松地选择输出模板

像这样:

  _logger = new LoggerConfiguration()
                  .WriteTo.File(
                      Path.Combine(config.Value.FilePath, config.Value.FileName),
                      outputTemplate: "[{Timestamp:yyyy-MM-dd HH:mm:ss}] {Message:lj}{NewLine}",
                      rollingInterval: RollingInterval.Day
                  ).CreateLogger();
现在我正在尝试使用Serilog进行网络日志记录,如下所示:

    var ip = IPAddress.Parse(config.Value.ServerIp);

        _logger = new LoggerConfiguration()
                  .WriteTo.TCPSink(ip, config.Value.Port)
                  .CreateLogger();
var message = new { to_index = "test-index", message  = "test-message" };

            var json = JsonConvert.SerializeObject(message, Formatting.Indented);

            log.Information(json);
如果我是这样记录的:

    var ip = IPAddress.Parse(config.Value.ServerIp);

        _logger = new LoggerConfiguration()
                  .WriteTo.TCPSink(ip, config.Value.Port)
                  .CreateLogger();
var message = new { to_index = "test-index", message  = "test-message" };

            var json = JsonConvert.SerializeObject(message, Formatting.Indented);

            log.Information(json);
kibana板上的输出如下所示:

{"timestamp":"2020-04-11T10:10:58.1110467+02:00","level":"Information","message":"{\r\n  \"to_index\": \"test-index\",\r\n  \"message\": \"test-message\"\r\n}"}
虽然我希望它是我提交的唯一对象:

{\"to_index\": \"test-index\",\"message\": \"test-message\"}

数据发送(或呈现)方式的定制取决于您使用的接收器,因为接收器为您提供了一种方法

例如,某些接收器允许您提供一个
outputTemplate
字符串来定义属性,其他接收器允许您提供一个实现
ITextFormatter
的类,该类负责格式化消息


您似乎正在使用它,它确实允许您提供一个自定义的
ITextFormatter
,因此您可以基于其中一个默认的格式化程序(和)实现自己的格式化程序,并决定消息应该如何发送。

数据发送(或呈现)方式的自定义取决于你使用的水槽,因为水槽可以为你提供一种方法

例如,某些接收器允许您提供一个
outputTemplate
字符串来定义属性,其他接收器允许您提供一个实现
ITextFormatter
的类,该类负责格式化消息

您似乎正在使用它,它确实允许您提供一个自定义的
ITextFormatter
,因此您可以基于其中一个默认的格式化程序(和)实现自己的格式化程序,并决定如何发送消息