繁体   English   中英

C# Serilog 在写入文件之前压缩日志消息?

[英]C# Serilog compress log messages before writing to a file?

现在我们有一个架构,其中应用程序记录到文件,然后 fluentd 拉日志并将其推送到 elasticsearch,所以在这种情况下,我们要压缩日志以利用空间,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();
                })

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

或者,您可以编写自己的 sink

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM