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: 一 ...
随机推荐
- Linux下*.tar.bz2等文件如何解压--转
如果tar不支持j这个参数就先用 bzip2 -d xxx.tar.bz2 把它解压成.tar文件,然后再用 tar xvf xxx.tar 拆包.压缩解压 linux下怎么解后缀名是gzip的文件? ...
- signed char、unsigned char
什么是无符号char类型?与常见的char类型有何不同? 在c++中有三种不同的字符类型:char,signed char,unsigned char.如果要应用与文本字符,就使用不加限制的char类 ...
- APK文件安装模拟器和ADB命令的使用
1.安装APK文件到模拟器 Android手机使用的执行文件为APK格式,类似于Windows平台的exe文件.在Android模拟器中安装APK文件有多种方法,如果你是开发人员,可以通过Eclips ...
- alfresco 5.0 document
http://docs.alfresco.com/community/tasks/imagemagick-config.html
- Oracle 数据泵导入导出总结
Oracle 数据泵(IMPDP/EXPDP)导入导出总结 Oracle数据泵导入导出是日常工作中常用的基本技术之一,它相对传统的逻辑导入导出要高效,这种特性更适合数据库对象数量巨大的情形,因为我日常 ...
- HUST 1017 Exact cover (Dancing links)
1017 - Exact cover 时间限制:15秒 内存限制:128兆 自定评测 6110 次提交 3226 次通过 题目描述 There is an N*M matrix with only 0 ...
- VbCrlf的相关说明
今天从别人发来的手顺书中发现了这几个字母,一头雾水,下面查了一下相关资料. vbCrLf是Visual Basic中的一个字符串常数,即“Chr(13) & Chr(10)”(回车符与换行符连 ...
- MicrosoftActiveSync 安装
如何将自己的程序放到开发板中呢,一般都有三种方法:U盘.SD卡.USB同步,前两者其实差不多,很方便快捷,而笔者在进行USB同步的时候,还是发现了一些问题,下面我来介绍一下USB同步方法的相关知识. ...
- Guava: 事件总线EventBus
EventBus 直译过来就是事件总线,它使用发布订阅模式支持组件之间的通信,不需要显式地注册回调,比观察者模式更灵活,可用于替换Java中传统的事件监听模式,EventBus的作用就是解耦,它不是通 ...
- Mina的线程模型
在Mina的NIO模式中有三种I/O工作线程(这三种线程模型只在NIOSocket中有效,在NIO数据包和虚拟管道中没有,也不需要配置): IoAcceptor/IoConnector线程 IoPro ...