Сигнал запуска при достижении предела размера файла
Я пишу файлы журналов и хотел бы установить ограничение размера в 10 мес.
Я думал о создании QTimer
запуск каждые X минут / часов QFileInfo::refresh и проверка размера файла.
Был бы лучший способ сделать это? Используя QTimer
звучит больно и дорого для меня. Я хотел бы использовать SIGNAL
когда достигнут предел размера.
1 ответ
Простое и рабочее решение - прочитать размер файла с помощью 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
}