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

标签 c# elasticsearch serilog fluentd

现在我们有一个架构,其中应用程序将日志记录到文件,然后 fluidd 拉取日志并将其推送到elasticsearch,因此在这种情况下,我们希望压缩日志以利用空间,serilog 是否支持日志在将其写入文件之前进行压缩??

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

编写的示例代码:

 .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 来包装流并压缩它。

或者,您可以write your own sink .

关于C# Serilog 在写入文件之前压缩日志消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67471564/

相关文章:

c# - HttpWebRequest WebException 协议(protocol)错误

c# - 解码到 MemoryStream 的 XML 附件不起作用

c# - 使用 Serilog 的 Azure 日志分析已停止日志记录(MVC 核心)

security - 通过浏览器保护 Elasticsearch 访问

c# - 无法使用 Serilog 登录 MS SQL

Serilog 滚动日志仅记录在一个文件中

c# - 将 WPF DLL 加载并运行到另一个 WPF exe 中

C# 双舍入

elasticsearch - Elasticsearch过滤器,用于确定是否缺少值

elasticsearch - 我无法读取 Logstash 中的拆分字段