[发明专利]一种基于单例模式的日志记录方法在审
申请号: | 202211006815.1 | 申请日: | 2022-08-22 |
公开(公告)号: | CN115374076A | 公开(公告)日: | 2022-11-22 |
发明(设计)人: | 王雨龙 | 申请(专利权)人: | 天津津航计算技术研究所 |
主分类号: | G06F16/18 | 分类号: | G06F16/18;G06F16/172;G06F16/17;G06F16/13;G06F9/52 |
代理公司: | 天津市鼎拓知识产权代理有限公司 12233 | 代理人: | 陈盼盼 |
地址: | 300000 天津*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 模式 日志 记录 方法 | ||
本申请提供一种基于单例模式的日志记录方法,包括:定义打印类,类型为单例类型;判断对象指针为空时,创建打印类的对象指针,调用其指向的对象实例;否则,调用对象指针所指向的对象实例;对该对象实例中的对象文件和路径进行初始化;判断对象实例中的第一互斥量在其他对象实例中的状态为未上锁状态时,对调用的对象实例中的第一互斥量进行上锁操作,并调用日志输出函数;装载日志输出函数,将日志输出函数输出的文本流录入至对象文件中;对所调用的对象实例中的第一互斥量进行解锁操作。通过上述步骤,使得使用者可在QT人机交互过程中调用此单例类,以在不同线程以及文件下对LOG数据进行记录,将日志存储在文本文件中。
技术领域
本公开一般涉及计算机技术领域,具体涉及一种基于单例模式的日志记录方法。
背景技术
Qt是一个跨平台的C++图形用户界面应用程序框架,且开发过程简单,同时支持图形拖拽的方式以及代码编程的方式开发,开发完成后不需要改变源代码即可编译部署到多种平台上。QT图形框架完全具备C++面向对象编程语言的三大特性:封装性、集成性、多态性,方便大型工程的开发。
在航空航天系统地面设备中,人机交互界面常在QT平台下开发,而调试与记录功能非常重要,调试过程中常用断点调试,在开发过程中不断设置断点在监视过程状态。
基于QT框架的人机交互软件,通常使用QT框架提供的qDebug或C标准库的printf函数对过程信息进行打印输出,以输出到集成开发环境的控制台,由此实现了测试过程中对测试记录进行排查。然而所最终发布的发布版本需要部署在用户控制计算机设备中,其一般不具有集成开发环境,发布版本通常不支持调试打印信息,因此软件发布后发生故障没有过程记录很难实现问题的排查。
发明内容
鉴于现有技术中的上述缺陷或不足,期望提供一种可解决上述技术问题的基于单例模式的日志记录方法。
本申请提供一种基于单例模式的日志记录方法,包括:
S1:定义打印类,其类型为单例类型;所述打印类包括:指向所述打印类的对象实例的对象指针,用于获取所述对象指针的获取函数,日志记录初始化函数,对象文件,所述对象文件的路径以及第一互斥量;
S2:判断所述对象指针为空时,创建所述打印类的对象指针,调用其指向的对象实例;否则,调用所述对象指针所指向的对象实例;
S3:通过所述日志记录初始化函数,对所述对象实例中的所述对象文件以及所述对象文件的路径进行初始化;
S4:判断所调用的对象实例中的第一互斥量在其他对象实例中的状态为未上锁状态时,对所调用的对象实例中的第一互斥量进行上锁操作,并调用日志输出函数;所述日志输出函数用于:接收日志消息内容以及日志消息类型;将所述日志消息内容以及所述日志消息类型以文本流的形式输出;
S5:调用QT框架中的输出装载函数,所述输出装载函数用于装载所述日志输出函数,将所述日志输出函数输出的文本流以所述对象文件的路径录入至所述对象文件中;
S6:对所调用的对象实例中的第一互斥量进行解锁操作。
根据本申请实施例提供的技术方案,步骤S4中,判断所调用的对象实例中的第一互斥量在其他对象实例中的状态为未上锁状态时,对所调用的对象实例中的第一互斥量进行上锁操作的方法具体为:
定义第一加锁互斥类对象,所述第一加锁互斥类对象用于:
接收所述第一互斥量的地址;
判断所述第一互斥量的地址中处于其他对象实例的第一互斥量的状态为未上锁状态时,对所调用的对象实例中的第一互斥量进行上锁操作。
根据本申请实施例提供的技术方案,所述打印类还包括第二互斥量;步骤S2的方法具体为:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津津航计算技术研究所,未经天津津航计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211006815.1/2.html,转载请声明来源钻瓜专利网。