Qt 日志宏
随便写了一个日志帮助的宏,既可以如同qDebug()一般在调试时输出信息,也可以在输出文本文件
#ifndef LOG_H
#define LOG_H #include <QDir>
#include <QFile>
#include <QString>
#include <QDebug>
#include <QDate>
#include <QTime>
#include <QDateTime>
#include <QTextStream> #define WRITE_LOG_FILE(type,msg)(\
{QString err;\
switch(type){\
case QtDebugMsg:{err = "调试信息:";}break;\
case QtWarningMsg:{err = "警告信息:";}break;\
case QtCriticalMsg:{err = "严重错误:";}break;\
case QtFatalMsg:{err = "致命错误:";}break;\
default:{err = "常规信息:";}break;}\
QString text = QString("%1\r\n 所在文件:%2 \r\n 所在位置:%3 \r\n 记录时间:%4 \r\n 记录信息:%5 \r\n").arg (err).arg (__FILE__).arg (__LINE__).arg (QDateTime::currentDateTime ().toString ("yyyy-MM-dd hh:mm:ss ddd")).arg (msg);qDebug() << text;\
QDir dir;\
QString path = dir.currentPath () + "\\log\\";\
QDateTime dt = QDateTime::currentDateTime ();\
QTime t = dt.time ();\
QDate d = dt.date ();\
QString name = QString("%1%2%3%4").arg (QString::number (d.year ())).arg (QString::number (d.month ())).arg (QString::number (d.day ())).arg (QString::number (t.hour ())) + QString(".txt");\
QString filePath = path + name;\
if(!dir.exists(path))\
{\
dir.mkpath(path);\
}\
QFile file(filePath);\
if(!file.exists ())\
{\
file.open (QIODevice::WriteOnly);\
file.close ();\
}\
if(file.open(QIODevice::WriteOnly | QIODevice::Append))\
{\
QTextStream stream(&file);\
stream << text << "\r\n";\
file.flush();file.close();\
}\
})
#define DEBUG_LOG(msg)(WRITE_LOG_FILE(QtDebugMsg,msg))
#define WARNING_LOG(msg)(WRITE_LOG_FILE(QtWarningMsg,msg))
#define CRITICAL_LOG(msg)(WRITE_LOG_FILE(QtCriticalMsg,msg))
#define FATAL_LOG(msg)(WRITE_LOG_FILE(QtFatalMsg,msg))
#define LOG(msg)(WRITE_LOG_FILE(-1,msg)) #endif // LOG_H
Qt 日志宏的更多相关文章
- Qt全局宏和变量
1. Qt 全局宏定义 Qt版本号: QT_VERSION : (major << 16) + (minor << 8) + patch 检测版本号: QT_VERSION ...
- 一只简单的网络爬虫(基于linux C/C++)————读取命令行参数及日志宏设计
linux上面的程序刚开始启动的时候一般会从命令行获取某些参数,比如以守护进程运行啊什么的,典型的例子就是linux下的man,如下图所示 实现该功能可以使用getopt函数实现,该函数在头文件uni ...
- Qt 日志输出文件
在Qt开发过程当中经常使用qDebug等一些输出来调试程序,但是到了正式发布的时候,都会被注释或者删除,采用日志输出来代替. 做过项目的童鞋可能都使用过日志功能,以便有异常错误能够快速跟踪.定 ...
- Qt 日志输出
Qt学习(3)日志输出 普通的打印输出 用 QtCreator 开发 Qt 程序时, 经常需要向控制台打印一些参数.有时候是查看对象的属性是否被正确设置,有时候是查看程序是否执行了某一段代码,或者执行 ...
- 实现Qt日志功能并输出到文件(qDebug\qWarning\ qCritical\qFatal)
<1>信息基本分类:qDebug : 调试信息提示qWarning : 一般的警告提示qCritical: 严重错误提示qFatal : 致命错误提示 <2>如何截获这些信息Q ...
- QT日志系统
今天给大家介绍下QT里面的日志系统,直接上代码 #include <QApplication> #include <iostream> #include "ThorH ...
- QT全局宏变量的实现
qt中如何实现定义一个宏,在整个工程中都可以实现呢?下面我来写一个亲测的例子: pro中添加如下宏定义代码: DEFINES += HELLO=\"$$PWD/\" DEFINES ...
- 【QT】宏
宏 Q_CORE_EXPORT _CORE_EXPORT 其实是一个宏,用来说明这是一个动态库导出类.QT是个跨平台的库,而不同的操作系统,不同的编译器,对动态库的导出说明是不一样的,比如,在wind ...
- 实现Qt日志功能并输出到文件(使用qInstallMsgHandler安装customMessageHandler)good
原文 http://www.cppblog.com/lauer3912/archive/2011/04/10/143870.html 一.基本分类:qDebug : 调试信息提示qWarning: 一 ...
随机推荐
- online ddl 跟踪
| >mysql_prepare_alter_table T@4 : | | | | | | <mysql_prepare_alter_table 7368 T@4 : | | | | | ...
- PHP 正则表达式语法
则表达式简介 在某些应用中,往往有时候需要根据一定的规则来匹配(查找)确认一些字符串,如要求用户输入的 QQ 号码为数字且至少 5 位.用于描述这些规则的工具就是正则表达式. 最简单的匹配 最简单的匹 ...
- Subsequence
Description A sequence of N positive integers (10 < N < 100 000), each of them less than or eq ...
- Balanced Lineup(最简单的线段树题目)
Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 33389 Accepted: 15665 Case Time Limit ...
- Cannot start service SPUserCodeV4 on computer
Cannot start service SPUserCodeV4 on computer SharePoint2010 部署问题: 当Visual Studio 2010中尝试部署Sharepoin ...
- jQuery数组处理
1. $.each(array, [callback]) 遍历[常用] 解释: 1.不同于例遍 jQuery 对象的 $().each() 方法,此方法可用于例遍任何对象(不仅仅是数组哦~). 2.回 ...
- A simple way for hover pop bootstrap nav-menu
.navbar .nav > li .dropdown-menu { margin:; } .navbar .nav > li:hover .dropdown-menu { display ...
- C中的回调函数
C语言中应用回调函数的地方非常多,如Nginx中: struct ngx_command_s { ngx_str_t name; ngx_uint_t type; char *(*set)(ngx_c ...
- [改善Java代码]小心switch带来的空值异常
使用枚举定义常量时,会伴有大量的switch语句判断,目的是伪类每个枚举项解释其行为,例如: public class Client { public static void main(String[ ...
- BZOJ 2962
2962: 序列操作 Time Limit: 50 Sec Memory Limit: 256 MBSubmit: 618 Solved: 225[Submit][Status][Discuss] ...