Я пишу файлы журналов и хотел бы установить ограничение размера в 10 мес.
Я думал о создании QTimer
запуск каждые X минут / часов QFileInfo :: Обновить и проверка размера файла.
Был бы лучший способ сделать это? Используя QTimer
звучит больно и дорого для меня. Я хотел бы использовать SIGNAL
когда достигнут предел размера.
Простое и рабочее решение заключается в прочитать размер файла с QFile::size()
сразу после написания в файл журнала и реагировать, если размер превышает Лимит. Обратите внимание, что файл должен быть открыт при чтении размера.
void Logger::log(const QString &rLine)
{
QFile f(logFileName());
if (f.open(QIODevice::ReadWrite | QIODevice::Append | QIODevice::Text))
{
QTextStream out(&f);
out << rLine << endl;
qint64 f_size = f.size();
f.close();
checkFileSize(f_size);
}
else
{
QTextStream out(stdout);
out << "CAN'T OPEN LOG FILE: " << logFileName();
}
}
void Logger::checkFileSize(qint64 size)
{
if (size <= maxFileSize())
{
return;
}
// Roll the log file or do whatever you wish like send a signal
}
Других решений пока нет …