Ответ 1
Я получил предложение от Николаса Блумхардта (создателя Serilog) использовать RollingFileSink с JsonFormatter.
Мы начали использовать Serilog в сочетании с Elasticsearch, и это очень эффективный способ хранения данных журнала структуры (а затем визуализировать их с помощью таких инструментов, как Kibana). Однако я вижу преимущество не записывать данные журнала непосредственно в бэкэнд, а вместо этого настраивать брокер журналов, например Logstash, который может взять на себя ответственность за добавление тегов для регистрации сообщений, выбора индексов и т.д. С помощью этих приложений настройки не требуется знание распределения данных журнала.
С помощью Logstash в середине вопрос заключается в том, как лучше использовать Serilog, поэтому Logstash может импортировать свои данные без применения передовых и мощных фильтров. Я видел, как Redis упоминается как хороший компаньон для Logstash, но у Serilog нет раковины Redis. Любые рекомендации для Serilog о том, какие данные могут быть легко перенесены Logstash в индекс Elasticsearch?
Существует даже подход к использованию утилиты Elasticsearch, а затем завершайте его снова в Elasticsearch после некоторых аранжировок и применения дополнительных тегов.
Я получил предложение от Николаса Блумхардта (создателя Serilog) использовать RollingFileSink с JsonFormatter.
Принятый ответ был написан до раковины Serilog.Sinks.Http.
Вместо того, чтобы регистрироваться в файле и Filebeat отслеживать его, можно было бы регистрировать события протокола отправки HTTP в Logstash HTTP-входной плагин. Это означало бы меньшее количество движущихся частей в случаях, где создавались журналы.
Я создал приемник для Serilog, который поддерживает RabbitMQ, который очень хорошо связан с logstash, используя logstash rabbitmq input-plugin:
https://www.nuget.org/packages/Serilog.Sinks.RabbitMQ
Если вы запускаете экземпляр RabbitMQ на своем сервере приложений, вы можете войти с Serilog в этот экземпляр RabbitMQ, используя RabbitMQSink, в конечном счете, минуя сценарии сегрегации/отключения сети.
Logstash затем заберет сообщения в очереди, когда сеть будет восстановлена.
Обновление: Мойка теперь в V2.0 и поддерживает ASP.NET Core 1.0
Возможно, самый актуальный ответ будет:
Используйте раковину ElasticSearch.
Он включает режим долговечности, поэтому журналы не теряются, если приложение находится в автономном режиме.