Я использую log4cplus в своем проекте для ведения журнала. Я создал logger.conf, и я буду загружать его в начале моего приложения.
Вот мой logger.conf:
log4cplus.appender.Developer=log4cplus::RollingFileAppender
log4cplus.appender.Developer.DatePattern = ".yyyy-MM-dd"log4cplus.appender.Developer.Schedule = HOURLY
log4cplus.appender.Developer.File=log/developer.log
log4cplus.appender.Developer.MaxFileSize=3MB
log4cplus.appender.Developer.MaxBackupIndex=10
log4cplus.appender.Developer.layout=log4cplus::PatternLayout
log4cplus.appender.Developer.layout.ContextPrinting=enabled
log4cplus.appender.Developer.layout.ConversionPattern=%D{%Y-%m-%d %H:%M:%S,%Q} [%t] %p - %m%n
log4cplus.appender.Developer.Threshold=TRACE
log4cplus.logger.DEVELOPER=TRACE, Developer
И я буду загружать мой конфигурационный файл в моем коде так:
QString log_path = qApp->applicationDirPath() + "/log";
QDir().mkpath(log_path);
PropertyConfigurator logger(L"configs/logger.conf", Logger::getDefaultHierarchy());
logger.configure();
Как видите, всякий раз, когда мой журнал достигает 3 МБ, Log4Cplus делает резервную копию (от developer.log.1 до developer.log.10).
Как я могу сказать Log4Cplus сжать резервную копию, которую он создает (в моем файле конфигурации)?
Я не уверен, но я не думаю, что вы можете указать это в файле конфигурации. Один из способов — создать свой собственный appender, унаследованный от RollingFileAppender, а затем добавить шаг сжатия после копирования.
Других решений пока нет …