今天做项目实现一个简单的警报信息输出到日志文件的功能。

还看了一些日志框架,参考Qt 自定义日志类 – fengMisaka – 博客园 (cnblogs.com)但是这些框架是用日志来记录编译调试代码过程中出现的问题这类信息,与我做的项目不匹配。

.h文件

 1 #ifndef LOG_H
 2 #define LOG_H
 3 
 4 #include <QObject>
 5 #include <QFile>
 6 #include <QDateTime>
 7 #include <QMessageBox>
 8 #include <QTextStream>
 9 
10 class Log : public QObject
11 {
12     Q_OBJECT
13 public:
14     explicit Log(QObject *parent = nullptr);
15 
16     void open(const QString& fileName);
17     void write(int type,const QString& msg);
18 
19 
20 signals:
21 
22 private:
23     QFile* file;
24     QDateTime dateTime;
25 
26 };
27 
28 #endif // LOG_H

自定义日志类有两个私有成员变量,两个成员函数作为接口。

QFile类型的指针主要用来操作文件。

使用到原来所学的知识:

1、delegation 委托composition by reference

2、自己试着定义一个类

3、复习了创建文件、打开文件、写文件如何用Qt编程实现

.cpp文件

 1 #include "log.h"
 2 
 3 Log::Log(QObject *parent)
 4     : QObject{parent}
 5 {
 6 
 7 }
 8 
 9 
10 void Log::open(const QString &fileName)
11 {
12     file = new QFile(fileName);//构造一个文件对象,代表名称为fileName的文件
13     if(!file->exists())
14     {
15         if(!file->open(QIODevice::WriteOnly | QIODevice::Append))//WriteOnly模式,如果相关文件不存在会在打开这个文件前创建一个
16         {
17            QMessageBox::information(NULL,tr("警报"),tr("日志文件创建失败!"));
18         }
19     }
20     else
21     {
22         file->open(QIODevice::WriteOnly);
23     }
24 
25 }
26 
27 void Log::write(int type, const QString &msg)
28 {
29     QTextStream out(file);
30     QString str;
31     str += dateTime.currentDateTime().toString("[yyyy-MM-dd hh:mm:ss]");
32     str += " ";
33     switch(type)
34     {
35         case 0: str +="ALERT";break;
36         case 1: str +="NOTICE";break;
37     }
38     str += " ";
39     str += msg;
40     out << str  ;
41 }

参考:Qt—log日志框架(1)_WenCoo的博客-CSDN博客

原文地址:http://www.cnblogs.com/littleheadache/p/16826645.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性