前言:消息的基本分类
qDebug : 调试信息提示 qWarning: 一般的警告提示 qCritical: 严重错误提示 qFatal: 致命错误提示 一:日志记录的思路 首先截获Qt的信息输出内容, 新建一个文件,每次当有信息需要输出时,则先得到当前的时间信息,再和要输出的信息一起追加到日志文件中。这样便可以监视程序的运行状态,找到程序出错的原因了。 二:截获Qt的日志输出 (1),在主函数中安装消息处理函数:qInstallMsgHandler(messageOutput); //messageOutput为函数名 (2),在messageOutput函数中对消息进行分类 实例: //第一步,安装消息处理函数 int main(int argc, char *argv[]) { QApplication a(argc, argv); qInstallMsgHandler(messageOutput); //安装消息处理函数 QFont font; font.setPointSize(16); font.setFamily(("wqy-zenhei")); a.setFont(font); //InputContext *ic = new InputContext; //a.setInputContext(ic); //中文支持 QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312")); QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312")); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312")); MainWindow w; //项目
w.show(); return a.exec(); } //第二步对消息进行分类处理 //对消息进行分类,并且调用存储函数 void messageOutput(QtMsgType type, const char *msg) { QString txt; //对信息进行分类 switch (type) { //调试信息提示 case QtDebugMsg: txt = QString("Debug: %1").arg(msg); break; //一般的warning提示
case QtWarningMsg: txt = QString("Warning: %1").arg(msg); break; //严重错误提示 case QtCriticalMsg: txt = QString("Critical: %1").arg(msg); break; //致命错误提示 case QtFatalMsg: txt = QString("Fatal: %1").arg(msg); abort(); } //将消息存储在磁盘上 saveDebugMessage(txt); } //第三步,将信息添加时间信息后,存储在磁盘上 //加上系统时间,将消息存储在磁盘上 void MainWindow::saveDebugMessage(QString msg) { //得到系统的当前日期和时间 QDate date=QDate::currentDate(); QTime time=QTime::currentTime(); QString systemInfo=QString("%1/%2 %3:%4:%5 ").arg(date.month(),2,10,QChar('0')).arg(date.day(),2,10,QChar('0')).arg(time.hour(),2,10,QChar('0')).arg(time.minute(),2,10,QChar('0')).arg(time.second(),2,10,QChar('0'))+" "+QString::number(time.msec())+" "; //追加上信息 systemInfo.append(msg); //打开系统的日志文件 QFile file("../mainDebug"); if(file.open(QFile::Append|QIODevice::Text)) //以追加和文本的方式打开日志文件 { //打开文件成功,写入信息 QTextStream out(&file); out<<systemInfo<<"\r\n"; } else { } file.close(); } |
|
来自: ylsnData > 《18Qt调试相关》