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