QtLog
QtLog
#include "mainwindow.h"
#include <QApplication>
#include <QByteArray>
#include <QDebug> #define LOG_FILE_PATH "D:\\QtLog\\log.txt"
static FILE* g_log_fp=;
static void closLogFile(){
fclose(g_log_fp);//main函数退出关闭日志文档 }
static void myMessageOutPut(QtMsgType type,const QMessageLogContext &contex,const QString &msg){
QByteArray localMsg=msg.toLocal8Bit();
switch (type) {
case QtDebugMsg:
fprintf(g_log_fp,"Debug :%s(%s:%u,%s)\n",localMsg.constData(),contex.file,contex.line,contex.function); break;
case QtWarningMsg:
fprintf(g_log_fp,"Waring :%s(%s:%u,%s)\n",localMsg.constData(),contex.file,contex.line,contex.function); break;
case QtCriticalMsg:
fprintf(g_log_fp,"Critical :%s(%s:%u,%s)\n",localMsg.constData(),contex.file,contex.line,contex.function); break;
case QtFatalMsg:
fprintf(g_log_fp,"Fatal :%s(%s:%u,%s)\n",localMsg.constData(),contex.file,contex.line,contex.function);
abort();// 致命错误,程序停止退出
break; default:
break;
} }
int main(int argc, char *argv[])
{ g_log_fp=fopen(LOG_FILE_PATH,"wt");
atexit(closLogFile);//程序结束执行关闭文件
qInstallMessageHandler(myMessageOutPut);
QApplication a(argc, argv);
// MainWindow w;
// w.show(); qDebug()<<"I am debug;";
qWarning()<<"I am waring";
qCritical()<<"I am critical";
qFatal("I am fatal"); return a.exec();
}
http://blog.csdn.net/leejore11/article/details/46837185
QtLog的更多相关文章
随机推荐
- linux下配置tomcat开机自启动
Linux下配置tomcat开机自启动 1.写一个tomcat脚本,内容如下,设置其权限为755,放在/etc/init.d/目录下 #!/bin/bash## /etc/init.d/tomca ...
- CString,string和char*
CString是MFC中的 标准C中没有string,有string.h头文件,其中是strcpy,strcmp等函数.但操作对象都是char*类型 string是C++中封装的 转化:LPCSTR ...
- 安装oracle xe一些注意点
主要是web管理数据的的端口8080端口的问题, 会和tomcat冲突 安装时把开启8080端口的tomcat启动了 占用8080端口就行了, 然后安装oracle xe就会让你输入 web管理数据的 ...
- 求正整数n的所有因子
因子的概念:假如整数n除以m,结果是无余数的整数,那么我们称m就是n的因子. 需要注意的是,唯有被除数,除数,商皆为整数,余数为零时,此关系才成立.反过来说,我们称n为m的倍数. 求一个正整数n的所有 ...
- memcache 随笔
第一次用可能有很多不足的地方 以后慢慢改进. memcache 是一个简单的键/值对 是通过键和值储存信息到memcache中 ,通过特定的键请求来返回信息. 信息会无限期的保留在内存中 : ...
- c语言实践 用1角 2角 5角 凑成10元钱的方法
/* 用1角,2角,5角凑出10元钱,有几种办法. 也就是0.1a+0.2b+0.3c=10,化简一下就是 a=100-2b-3c 因为a的范围是0到100,所以弄一个循环 把a的值从0尝试到100, ...
- Mr_matcher的细节1
1.NodeHandle类(或者NodeHandle句柄)的私有名称 1)句柄可以让你通过构造函数指定命名空间 ros::NodeHandle nh("my_namespace") ...
- 实现一个简单的Plugin
1.准备 1)安装pluginlib_tutorials包: 2)创建一个包 2.创建基类 创建一个基类,所有的插件都将从基类继承,如RegularPolygon基类 创建一个基类头文件 其内容如下 ...
- oracle数据库登录
在做以下操作时,要确保你的数据库环境已经正确安装完成.数据库在实际应用中是比较多的,我们测试人员经常会在前台造一些测试数据,在后台数据库进行验证,当然,不局限于此,数据库也可以作为一个专项测试来谈.反 ...
- Linq学习<一>
lambda查询语法: var result =arrarylist.where(n=>n.contains("l")) 简化的委托方法实例 linq查询结构: var ...