【问题标题】:C# Serilog compress log messages before writing to a file?C# Serilog 在写入文件之前压缩日志消息?
【发布时间】:2021-05-10 13:40:32
【问题描述】:

现在我们有一个架构,其中应用程序记录到文件,然后 fluentd 拉日志并将其推送到弹性搜索,所以在这种情况下,我们想要压缩日志以利用空间,serilog 是否支持日志在写入文件之前压缩??

在另一种情况下,客户可能会记录超过 5mb 的数据,是否可以将日志写入文件,然后通过 fluentd 推送到弹性搜索?我觉得它会影响并导致失败,任何想法如何将超过 5mb 或大约 10mb 的消息推送到弹性搜索。

编写的示例代码:

 .UseSerilog((hostingContext, loggerConfiguration) =>
                {
                    loggerConfiguration.MinimumLevel.Debug()
                            .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
                            .Enrich.FromLogContext()
                            .WriteTo.File(path: Path.Combine(Environment.CurrentDirectory, "Logs", "log.txt"),
                                rollOnFileSizeLimit: true,
                                retainedFileCountLimit: 20,
                                rollingInterval: RollingInterval.Day,
                                fileSizeLimitBytes: 10000
                                )
                            .WriteTo.Console();
                })

【问题讨论】:

    标签: c# elasticsearch serilog fluentd


    【解决方案1】:

    Serilog 没有内置压缩功能。如果您使用Serilog.Sinks.File 接收器,则可以使用Serilog.Sinks.File.GZip 之类的插件,或者您可以创建自己的FileLifecycleHook 来包装流并压缩它。

    您也可以write your own sink

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-15
      • 1970-01-01
      • 1970-01-01
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      • 2015-06-04
      • 2020-01-02
      相关资源
      最近更新 更多