Qt运行时间记录类怎么使用
发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,这篇文章主要介绍"Qt运行时间记录类怎么使用",在日常操作中,相信很多人在Qt运行时间记录类怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Qt运行时间记录类怎么
千家信息网最后更新 2024年11月23日Qt运行时间记录类怎么使用
这篇文章主要介绍"Qt运行时间记录类怎么使用",在日常操作中,相信很多人在Qt运行时间记录类怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Qt运行时间记录类怎么使用"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
一、前言
在早期开发的软件中,尤其是初学者入门者写的软件,软件运行久了,难免遇到意外崩溃的时候,可是大部分的运行设备可能在现场客户那,需要记住每一次从软件启动后到软件意外关闭前的运行时间,需要记录的信息包括:编号+开始时间+结束时间+已运行时间,每次完整的运行过程只产生一条记录,每次运行时间改变以后更新当前这条记录即可。这样就可以确切的了解到软件在现场的真实运行情况是否糟糕,如果没有这个记录(当然可以选择记录存储到数据库),程序又重启恢复了,也不知道到底每次运行了多久,从几点到几点。为了写的简单点,不干扰原有的数据库文件,我一般选择输出到文本文件。
主要功能:
可以启动和停止服务,在需要的时候启动。
可以指定日志文件存放目录。
可以指定时间日志输出间隔。
可以单独追加一条记录到日志文件。
日志为文本格式,清晰明了。
二、代码思路
void SaveRunTime::getDiffValue(const QDateTime &startTime, const QDateTime &endTime, int &day, int &hour, int &minute){ qint64 sec = startTime.secsTo(endTime); day = hour = minute = 0; int seconds = 0; while (sec > 0) { seconds++; if (seconds == 60) { minute++; seconds = 0; } if (minute == 60) { hour++; minute = 0; } if (hour == 24) { day++; hour = 0; } sec--; }}void SaveRunTime::initLog(){ //判断当前年份的记事本文件是否存在,不存在则新建并且写入标题 //存在则自动读取最后一行的id号 记事本文件格式内容 //幢号 开始时间 结束时间 已运行时间 //1 2016-01-01 12:33:33 2016-02-05 12:12:12 day: 0 hour: 0 minute: 0 logFile = QString("%1/%2_runtime_%3.txt").arg(path).arg(name).arg(QDate::currentDate().year()); QFile file(logFile); if (file.size() == 0) { if (file.open(QFile::WriteOnly | QFile::Text)) { QString strID = QString("%1t").arg("编号"); QString strStartTime = QString("%1tt").arg("开始时间"); QString strEndTime = QString("%1tt").arg("结束时间"); QString strRunTime = QString("%1").arg("已运行时间"); QString line = strID + strStartTime + strEndTime + strRunTime; QTextStream stream(&file); stream << line << NEWLINE; file.close(); lastID = 0; } } else { if (file.open(QFile::ReadOnly)) { QString lastLine; while (!file.atEnd()) { lastLine = file.readLine(); } file.close(); QStringList list = lastLine.split("t"); lastID = list.at(0).toInt(); } } lastID++;}void SaveRunTime::appendLog(){ logFile = QString("%1/%2_runtime_%3.txt").arg(path).arg(name).arg(QDate::currentDate().year()); QFile file(logFile); //写入当前首次运行时间 if (file.open(QFile::WriteOnly | QFile::Append | QFile::Text)) { QString strID = QString("%1t").arg(lastID); QString strStartTime = QString("%1t").arg(startTime.toString("yyyy-MM-dd HH:mm:ss")); QString strEndTime = QString("%1t").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")); int day, hour, minute; getDiffValue(startTime, QDateTime::currentDateTime(), day, hour, minute); QString strRunTime = QString("%1 天 %2 时 %3 分").arg(day).arg(hour).arg(minute); QString line = strID + strStartTime + strEndTime + strRunTime; QTextStream stream(&file); stream << line << NEWLINE; file.close(); }}void SaveRunTime::saveLog(){ //每次保存都是将之前的所有文本读取出来,然后替换最后一行即可 logFile = QString("%1/%2_runtime_%3.txt").arg(path).arg(name).arg(QDate::currentDate().year()); QFile file(logFile); //如果日志文件不存在,则初始化一个日志文件 if (file.size() == 0) { initLog(); appendLog(); return; } if (file.open(QFile::ReadWrite)) { //一行行读取到链表 QStringList content; while (!file.atEnd()) { content.append(file.readLine()); } //重新清空文件 file.resize(0); //如果行数小于2则返回 if (content.count() < 2) { file.close(); return; } QString lastLine = content.last(); QStringList list = lastLine.split("t"); //计算已运行时间 int day, hour, minute; getDiffValue(startTime, QDateTime::currentDateTime(), day, hour, minute); QString strRunTime = QString("%1 天 %2 时 %3 分").arg(day).arg(hour).arg(minute); //重新拼接最后一行 list[2] = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); list[3] = strRunTime; lastLine = list.join("t"); //重新替换最后一行并写入新的数据 content[content.count() - 1] = lastLine; QTextStream stream(&file); stream << content.join("") << NEWLINE; file.close(); }}
三、效果图
到此,关于"Qt运行时间记录类怎么使用"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
时间
运行
文件
日志
软件
一行
学习
数据
文本
意外
数据库
时候
更多
格式
记事本
帮助
输出
选择
实用
糟糕
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
郑州net软件开发怎么样
excel新建数据库
局网络安全整改报告
自媒体时代大学生网络安全
赵小亮黄金数据库
服务器架设及管理参考文献
空间与服务器
软件开发公司核心岗位有哪些
众腾网络技术服务有限公司
省级软件开发区
电音服务器设备
华为服务器报废年限
群网络安全
软件开发商和代理商怎样分成
漯河网络安全文明
温州索易软件开发有限公司评价
网络安全的危害性的作文开头
如何进入网络安全认证
招商证券数据库数据
即时通信服务器搭建
中转服务器挖矿 断流
微课视频网络安全
软件开发与应用主要学什么
电影服务器连接不上怎么办
数据库怎么用arcgis打开
谁是你的客户 软件开发
轩芸宝可梦服务器
mysql数据库勒索攻击
网络技术实训总结结尾i
幼儿网络安全卡通画