当达到文件大小限制时触发信号



我正在写日志文件,希望将大小限制设置为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
}

相关内容

  • 没有找到相关文章

最新更新