是否可以指示 Serilog 将每个日志条目转储到单独的 json 文件中?

Is it possible to instruct Serilog to dump each log entry to a separate json file?

我正在开发一项服务,该服务必须将每个日志条目转储为单独的 json 文件。然后,所有这些转储的日志文件将被导入 ElasticSearch。我知道 ElasticSearch 接收器,但我的想法是在 ElasticSearch 不可用时不丢失日志。

一种解决方法是:

  1. 将 TextWriter 接收器与 StringWriter 一起使用;
  2. 将 StringWriter 内容转储到 json 文件;
  3. 并在每次调用后清除底层 StringBuilder。

还有其他解决方案吗?

为此需要添加 WriteTo.Sink(...) 的自定义 ILogEventSink。我认为 Serilog 随附的 JsonFormatter class 使实现起来相当快。