【问题标题】:How to configure Serilog Elasticsearch error hanling in appsettings in .NET Core 3.1?如何在 .NET Core 3.1 的 appsettings 中配置 Serilog Elasticsearch 错误处理?
【发布时间】:2021-02-26 08:17:18
【问题描述】:

我正在尝试在 .NET Core 3.1 (C#) 项目中配置 Serilog,但我想在 appsettings.json 中完全做到这一点。对于 file sinks 我做了所有配置都没有任何问题,但对于 elasticsearch 我无法弄清楚如何将下面的行写入appsettings.json 以便它工作:

.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri("http://localhost:9200"))
{
    FailureCallback = e => Console.WriteLine("Unable to submit event " + e.MessageTemplate),
    EmitEventFailure = EmitEventFailureHandling.WriteToSelfLog |
                       EmitEventFailureHandling.WriteToFailureSink |
                       EmitEventFailureHandling.RaiseCallback,
    FailureSink = new FileSink("./failures.txt", new JsonFormatter(), null)
})

Official documentation 仅显示EmitEventFailure 的基本示例,如下所示:

"emitEventFailure": "WriteToSelfLog"

它没有显示应该如何编写EmitEventFailures 的组合(多个标志)。 FailureSink 的情况相同:

"failureSink": "My.Namespace.MyFailureSink, My.Assembly.Name"

我不知道这到底是什么意思,也无法从上面列出的代码示例中弄清楚。

最后,对于FailureCallback,文档没有提到通过appsettings.json 执行此操作的任何选项。但是这个选项对我来说没什么大不了的,最坏的情况我可以省略它。

感谢任何提示!

【问题讨论】:

    标签: elasticsearch .net-core configuration serilog


    【解决方案1】:

    经过长时间的研究,我想出了以下答案。

    对于“emitEventFailure”属性,我们只需要在值之间用逗号隔开:

    "emitEventFailure": "WriteToFailureSink, WriteToSelfLog, RaiseCallback",
    

    failureSink属性,复杂的参数值绑定可以参考这个link。在指定包括参数对象在内的每个参数之前,我们需要设置对象的“类型”。 在我的示例中,将 azure blob 存储设置为故障接收器:

    "failureSink": {
            "type": "Serilog.Sinks.AzureBlobStorage.AzureBatchingBlobStorageSink, Serilog.Sinks.AzureBlobStorage",
            "blobServiceClient": {
              "type": "Azure.Storage.Blobs.BlobServiceClient, Azure.Storage.Blobs",
               "connectionString": "DefaultEndpointsProtocol=https;AccountName=xyz;AccountKey=xyzkey;EndpointSuffix=xyz.net"
            },
            "textFormatter": "Serilog.Formatting.Elasticsearch.ElasticsearchJsonFormatter, Serilog.Formatting.Elasticsearch",
            "storageContainerName": "test-api",
            "storageFileName": "test/{yyyy}-{MM}-{dd}.log",
            "period": "0.00:00:30",
            "batchSizeLimit": "1000"
            
          }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-24
      • 2021-05-07
      • 1970-01-01
      • 2022-07-06
      • 2020-08-22
      • 2020-08-20
      • 2018-11-16
      • 2021-11-03
      相关资源
      最近更新 更多