Как я могу сжать файлы журнала резервного копирования?

Я использую 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

Вот как я загружаю свой logger.conf:

QString log_path = qApp->applicationDirPath() + "/log";
QDir().mkpath(log_path);
PropertyConfigurator logger(L"configs/logger.conf", Logger::getDefaultHierarchy());
logger.configure();

И всякий раз, когда я хочу войти, я использую следующую строку:

Logger::getInstance(L"DEVELOPER").log(INFO_LOG_LEVEL, L"..............");

Я хотел бы знать две вещи:

  1. Как я могу сказать Log4Cplus сжать журналы резервного копирования?

    В каком-то посте я видел этот ответ:

    Мне нужно создать свою appenderнаследуя от RollingFileAppender и затем добавьте шаги сжатия.

    Если это возможно, может кто-нибудь сказать мне, как это сделать, пожалуйста? Я не знаю, как это реализовать.

  2. Как я могу добавить шаблон к имени этих журналов резервного копирования?

    На данный момент Log4Cplus делает мою резервную копию следующим образом:

    developer.log.1
    developer.log.2
    developer.log.3
    ...
    

    Я хотел бы добавить дату и время к нему.

1

Решение

Вам нужно будет реализовать свой собственный Appender следующим образом:

class NewFileAppender : public ::log4cplus::RollingFileAppender
{

void
newFileAppender::rollover()
{
helpers::LogLog & loglog = getLogLog();

// Close the current file
out.close();
out.clear(); // reset flags since the C++ standard specified that all the
// flags should remain unchanged on a close

// If maxBackups <= 0, then there is no file renaming to be done.
if (maxBackupIndex > 0)
{
rolloverCompressedFiles(filename, maxBackupIndex);

// Rename fileName to fileName.DATE
tstring target = filename + DATE;

int ret;

ret = file_rename (filename, target);
//TODO: compress using zlib
}
}

}

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]