elasticsearch 如何在Elasticsearch中使用Serilog进行日志格式化?,elasticsearch,logging,formatting,serilog,elasticsearch,Logging,Formatting,Serilog" /> elasticsearch 如何在Elasticsearch中使用Serilog进行日志格式化?,elasticsearch,logging,formatting,serilog,elasticsearch,Logging,Formatting,Serilog" />

elasticsearch 如何在Elasticsearch中使用Serilog进行日志格式化?

elasticsearch 如何在Elasticsearch中使用Serilog进行日志格式化?,elasticsearch,logging,formatting,serilog,elasticsearch,Logging,Formatting,Serilog,我正在尝试使用serilog.sink.Elasticsearch在Elasticsearch中创建日志。这是我的代码示例 static void Main(string[] args) { var loggerConfig = new LoggerConfiguration() .MinimumLevel.Debug() .WriteTo.Elasticsearch(new ElasticsearchSinkOptio

我正在尝试使用serilog.sink.Elasticsearch在Elasticsearch中创建日志。这是我的代码示例

    static void Main(string[] args)
    {
        var loggerConfig = new LoggerConfiguration()
           .MinimumLevel.Debug()
           .WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri("http://localhost:9200"))
           {
               CustomFormatter = new ElasticsearchJsonFormatter(),
               AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv7,
               FailureCallback = e => Console.WriteLine("Unable to submit event " + e.MessageTemplate),
               EmitEventFailure = EmitEventFailureHandling.RaiseCallback
           });

        var logger = loggerConfig.CreateLogger();

        Console.WriteLine("Logging..");
        logger.Information("{FirstName}, {LastName}", "Janes", "Dean");
    }
它产生了弹性搜索的输出,就像这样

{
   "_index":"myindex000001",
   "_type":"_doc",
   "_id":"QClPOnkBVfj3BqXvGYcl",
   "_version":1,
   "_score":null,
   "_source":{
      "@timestamp":"2021-05-05T10:15:31.0617265+08:00",
      "level":"Information",
      "messageTemplate":"{FirstName}, {LastName}",
      "message":"\"Janes\", \"Dean\"",
      "fields":{
         "FirstName":"Janes",
         "LastName":"Dean"
      }
   },
   "fields":{
      "@timestamp":[
         "2021-05-05T02:15:31.061Z"
      ]
   },
   "sort":[
      1620180931061
   ]
}
但我需要的是日志如下所示。将FirstName和LastName放在“\u source”节点下而不是“fields”节点下

这一点在Microsoft.Extensions.Logging中是可行的。但当我们迁移到Serilog时,我需要以Serilog的方式实现它。有什么我遗漏的吗?我不应该创建索引映射,因为映射已经就位,并且在从Microsoft.Extensions.logging登录时工作正常。只有当我使用Serilog时才会出现此问题

任何帮助都将不胜感激

{
   "_index":"myindex000001",
   "_type":"_doc",
   "_id":"QClPOnkBVfj3BqXvGYcl",
   "_version":1,
   "_score":null,
   "_source":{
      "@timestamp":"2021-05-05T10:15:31.0617265+08:00",
      "level":"Information",
      "firstName":"Janes",
      "lastName":"Dean",
      "message":"\"Janes\", \"Dean\""
   },
   "fields":{
      "@timestamp":[
         "2021-05-05T02:15:31.061Z"
      ]
   },
   "sort":[
      1620180931061
   ]
}