【发布时间】:2021-05-07 13:55:27
【问题描述】:
我们正处于分析阶段,现在我们有一个架构,Serilog 将写入本地文件,然后有一个 Fluentd 将提取日志并将它们转储到弹性搜索。这种架构的原因是确保没有消息丢失。建议这个架构好不好**???**
但最近我了解到 fluentd 具有将日志存储在本地的内置缓冲区机制,因此我们考虑将日志从应用程序直接推送到 fluentd 而不是本地文件,但是我们担心的是,如果出于某种原因 fluentd关闭,则不会进一步处理日志。所以在这种情况下,如果 fluentd 关闭,我们可以告诉 Serilog 在运行时将消息记录在本地文件中而不是 fluentd 中,我在 serilog 中看到了一些条件代码,但它们不在运行时,请帮忙。
bool enableConsoleLogging = ... bool enableFileLogging = ...
var builder = new LoggerConfiguration()
.Enrich.WithExceptionDetails()
.Enrich.FromLogContext()
.MinimumLevel.Warning()
.WriteTo.Conditional(evt => enableConsoleLogging, wt => wt.Console())
.WriteTo.Conditional(evt => enableFileLogging, wt => wt.File(...));
Log.Logger = builder.CreateLogger();
【问题讨论】:
标签: c# elasticsearch serilog fluentd fluent-bit