利用QFile做一个日志系统,可以定期删除日志,详细点
时间: 2023-05-15 19:06:28 浏览: 58
好的,可以使用QFile类来实现一个简单的日志系统。首先,需要在程序中创建一个QFile对象,然后使用QTextStream类将日志写入文件中。可以使用QDateTime类来获取当前日期和时间,以便在日志中记录时间戳。为了定期删除日志,可以使用QTimer类来定时执行删除操作。
以下是一个示例代码:
```cpp
#include <QFile>
#include <QTextStream>
#include <QDateTime>
#include <QTimer>
QFile logFile("log.txt");
void writeLog(const QString& message)
{
if (!logFile.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text))
return;
QTextStream out(&logFile);
out << QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz") << " " << message << "\n";
logFile.close();
}
void deleteOldLogs()
{
QDir dir(".");
QStringList filters;
filters << "log*.txt";
dir.setNameFilters(filters);
dir.setFilter(QDir::Files);
QDateTime now = QDateTime::currentDateTime();
QDateTime cutoff = now.addDays(-7); // 删除一周前的日志
foreach (QString fileName, dir.entryList())
{
QFile file(fileName);
if (file.exists() && file.lastModified() < cutoff)
file.remove();
}
}
int main(int argc, char *argv[])
{
// 定时删除日志
QTimer timer;
QObject::connect(&timer, &QTimer::timeout, deleteOldLogs);
timer.start(24 * 60 * 60 * 1000); // 每天执行一次
// 写入日志
writeLog("程序启动");
// 其它代码...
return 0;
}
```
这个示例代码中,writeLog()函数用于将日志写入文件中,deleteOldLogs()函数用于定期删除过期的日志文件。在main()函数中,使用QTimer类来定时执行deleteOldLogs()函数,以便定期删除日志。