C++增强日志:如何使用配置文件旋转和压缩日志?

voj3qocg  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(276)

我需要使用Boost Logging库来旋转日志并压缩旋转的日志,我想在配置文件中定义它,如下所示:

# Logging core settings section. May be omitted if no parameters specified within it.
[Core]
DisableLogging=false
Filter="%Severity% > 3"

# Sink settings sections
[Sinks.MySink1]
# Sink destination type
Destination=Console
# Formatter string. Optional, by default only log record message text is written.
Format="<%TimeStamp%> - %Message%"
FileName="%N.log"
RotationSize=1000000000

我如何实现这一点?
我找不到一种方法来结合旋转和压缩在一个配置文件。

gab6jxml

gab6jxml1#

建议使用logrotate之类的外部服务来压缩日志文件。压缩是一个耗时的过程,您不希望日志记录库在压缩日志文件时阻止应用程序的进程。因此,Boost.Log不支持开箱即用的压缩。
如果出于某种原因,您仍然希望在进程中执行压缩,您可以通过实现一个从collector接口派生的自定义文件收集器来实现这一点。收集器的store_file方法必须执行所有与移动和压缩文件、删除旧文件、当需要旋转当前写入的日志文件时,接收器后端将调用它。您将通过调用text_file_backend::set_file_collector方法将收集器设置为接收器后端。
若要与设置文件集成,您需要注册接收器工厂,该工厂将使用已分析的设置容器创建文件接收器,并使用自定义文件收集器配置文件接收器。此处对此进行了说明。

相关问题