1. 程式人生 > >Qt日誌功能實現總結

Qt日誌功能實現總結

1、資訊基本分類:
qDebug : 除錯資訊提示
qWarning : 一般的警告提示
qCritical: 嚴重錯誤提示
qFatal : 致命錯誤提示
2、如何截獲這些資訊
Qt提供了qInstallMsgHandler 方法用來定製訊息發生後如何來處理。
qInstallMsgHandler 是一個回撥函式,主要是由qDebug、qWarnng、qCritical、qFatal這些函式進行觸發,
也就是說,qDeubg這些函式處理的訊息文字會被qInstallMsgHandler 所指向的回撥函式截獲,這樣就允許使用者自己來處理這些訊息文字。
例如,你完全可以將這些訊息文字輸出並儲存到相關的日誌檔案中。

3、將qDebug()\qWarning()\qCritical()\qFatal() 資訊輸出到指定檔案中

示例1:

#include <qapplication.h>
#include <stdio.h>
#include <stdlib.h>

void customMessageHandler(QtMsgType type, const char *msg)
{
    QString txtMessage;
  
    switch (type) 
    {    
        case QtDebugMsg:    //除錯資訊提示
            txtMessage = QString("Debug: %1").arg(msg);
            break;

        case QtWarningMsg:    //一般的warning提示
            txtMessage = QString("Warning: %1").arg(msg);
            break;

        case QtCriticalMsg:    //嚴重錯誤提示
            txtMessage = QString("Critical: %1").arg(msg);
            break;

        case QtFatalMsg:    //致命錯誤提示
            txtMessage = QString("Fatal: %1").arg(msg);
            abort();
    }

    //儲存輸出相關資訊到指定檔案
    QFile outputFile("customMessageLog.txt");
    outputFile.open(QIODevice::WriteOnly | QIODevice::Append);
    QTextStream textStream(&outputFile);
    textStream << txtMessage << endl;
}
int main( int argc, char * argv[] ) 
{
    QApplication app( argc, argv );

    qInstallMsgHandler(customMessageHandler); //註冊MsgHandler回撥函式

    //以後就可以像下面這樣直接打日誌到檔案中,而且日誌也會包含時間資訊
    qDebug("This is a debug message");
    qWarning("This is a warning message");
    qCritical("This is a critical message");
    qFatal("This is a fatal message");

    return app.exec();
}

4、對應取消資訊處理

     直接呼叫qInstallMsgHandler(0)就可以

相關推薦

Qt日誌功能實現總結

1、資訊基本分類:qDebug : 除錯資訊提示qWarning : 一般的警告提示qCritical: 嚴重錯誤提示qFatal : 致命錯誤提示2、如何截獲這些資訊Qt提供了qInstallMsgHandler 方法用來定製訊息發生後如何來處理。qInstallMsgHa

QT:Log日誌功能實現

1.簡介 在利用QT進行開發的過程中經常會用到qDebug()來輸出除錯資訊,但當程式正式釋出時,這些都會被註釋或者刪除,這時我們就需要通過Log日誌輸出來代替。  Log日誌是專案當中比用的功能,以便系統有錯誤是能夠快速跟蹤、定位,QT中提供類似的機制。在QT4中是通過Qt::

ionic學習(七):問答社群03:登入功能實現 總結

登入功能整整搞了一天,期間各種錯誤不斷,剛接觸ionic,對Angular也不太熟悉,沒正規的學過html,css,js等前端知識。 整理一下流程: 1.製作登入頁面 2.構造登入等待遮罩層和登入錯誤遮罩層 3.通過storge儲存登入的資訊 4.通過判斷是否登入,並顯示相應頁面 備

公司任務——日誌功能完善總結

今天是9月27號,是我來到北大軟體的第三週,這周我需要完成的任務是有兩個:1.在使用者,使用者組,角色,專案管理,基線管理,配置管理,構件管理,版本管理的日誌中新增詳細資訊,完善功能;2.在日誌查詢中新增一個下拉框,進行分類查詢。 第一個功能非常簡單,不需要什麼

Java程式碼常用功能實現總結(二)

文章目錄 1.如何取得map裡key得最大值: 2.多執行緒寫法樣例: 1.如何取得map裡key得最大值: 方法一: 將Map中的k

Java程式碼常用功能實現總結

目錄 1.獲取當前系統時間: SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//設定日期格式 System.out.prin

用c語言實現日誌功能

windows.h 用c語言實現 pause truct argc ifdef open info oid // 參考鏈接 // C語言實現寫入日誌文件 https://blog.csdn.net/sunlion81/article/details/8647028 #

java 如何讓利用ip 實現登入日誌功能

1.匯入如下pom org.nutz.http.Http; org.nutz.http.Response; iorg.nutz.json.Json; <!--呼叫淘寶介面API的依賴--> <dependency>

一個日誌檢視功能實現-seelog原始碼閱讀

最近被後臺日誌弄的很煩,看到有個專案簡簡單單,又能滿足需要,順便試下看看效果,做下記錄。只是記錄下一部分內容,就不全部讀了,關於原始碼可以去https://github.com/xmge/seelog。 結構設計 // websocket客戶端 type client struct

程式碼總結:文字欄關鍵字搜尋功能實現

需求:根據關鍵字搜尋功能(%萬用字元) <div id="rightquestion"> <input type="text" placeholder="請輸入查詢關鍵字"/> <a href="#"><img

嵌入式QT APP實現按下電源按鍵休眠,再按一下電源按鍵即喚醒的功能---實現產品低功耗

1、修改裝置樹 button1 {                      label ="return";                      linux,code=<KEY_1>;                      gpios=<&am

C#學習總結(5)——倒計時功能實現

今晚在做老師留下的實驗報告內容,其中一個實驗包括了一個倒計時功能,第一次看到就是糾結這可怎麼寫,然後看實驗說明,要使用C#裡的計時器…然後就秒做完了。 Timer—計時器 新增Timer控制元件 到工具箱裡找到Timer,雙擊新增即可。新增之後找到

使用Poco::Logger實現日誌功能

使用的Poco標頭檔案及其對應的名稱空間 #include "Poco/FormattingChannel.h"#include "Poco/FileChannel.h"#include "Poco/PatternFormatter.h" using Poco::Messa

Android開發中使用FileDownloader來實現檔案下載功能總結一)

今天研究了一下Android開發中檔案下載功能,記錄一下。這篇部落格主要介紹第三方下載外掛:FileDownloader的單任務的使用方法,至於多工的後面會做補充記錄,再寫一篇博文。效果圖如下:(虛擬機器連不上網)1、首先是引用方法:implementation 'com.l

【IOS功能實現】之Core Animation動畫開發總結(CALayer)

一.重要引數 bounds,frame,position屬於基本的幾何定位,相互之間數值變化會相互影響 anchorPoint:單位引數(0-1)表示,變形(transform)時候的變換源點 zPosition:相當於css中z-index的概念,

通過ThreadLocal和HandlerInterceptor實現java後臺業務埋點日誌功能

目前公司的方案是用mdc來實現一個請求的業務資料埋點記錄,但是mdc是map方式,需要手動設定key,而且每次都要手動clear,一是不方便管理,再者如果忘記clear會造成業務埋點資料混亂。所以有了想要把埋點資料欄位統一封裝的想法,這樣方便維護,後面如果修改,

Libevent通過va_list實現日誌功能

Libevent提供一個記錄錯誤和警告資訊的日誌功能。預設是直接將上述資訊輸出到標準錯誤,同時也可以通過回撥函式提供自己的日誌函式覆蓋預設的功能。 1、C語言實現可變引數 <stdarg.h>中包含一組巨集定義,它們對如何遍歷引數進行了定義。

springboot 實現攔截器許可權過濾,以及用攔截器實現操作日誌功能(二)

接上文 繼承WebMvcConfigurerAdapter 類,新增 上文寫的攔截類 具體程式碼如下: package com.hcmony.web.interceptor; import org

QT 將INI檔案中的選項寫入QComboBox中功能實現

INI檔案如下  ;====================== 個人性別 ====================== [sex] 01=男 02=女 向QComboBox中寫入下拉選項的函式

實現Qt日誌輸出到檔案

#include <QtDebug> #include <QFile> #include <QTextStream > void customMessageHandler(QtMsgType type, const char *msg) {         QS