Qt 實現 Logger 日誌的顯示

Qt qDebug or 開源庫

基於 Qt qDebug

Qt 提供 qInstallMessageHandler(Qt5)或者qInstallMsgHandler(Qt4),能夠對QDebug、QWarning、QError等進行重定向等處理。html

能夠參考Qt Assistant 的幫助文檔,或者參考Qt之日誌輸出文件進行實現。安全

  • 缺點: 沒有嘗試過,可是有人不支持多線程,至少須要本身去考慮多線程安全問題
  • 缺點: 若是想要讓消息既存檔,又同時在窗口Widget中顯示,可能會麻煩點
  • 須要本身實現文件大小的判斷,以及歷史文件的備份
  • 若是隻是將日誌重定向至某個文件,不須要顯示,這方法挺好。推薦。

開源庫

QsLog (我的推薦)

簡單的日誌框架,能夠添加多個日誌的destination,能夠使用Signal/Slot機制方便的將日誌輸出到Widget。多線程

項目地址:QsLog的Bitbucket地址app

QxtLogger

QxtLib的一部分,若是也是用QxtLib的其餘功能,確定也會用這個。可是我沒用過框架

項目地址:QxtLogger Class Referencespa

Widget 顯示空間的選擇

使用QPlainTextEdit (推薦)

If you want to limit the total number of paragraphs in a QPlainTextEdit, as it is for example useful in a log viewer, then you can use the maximumBlockCount property. The combination of setMaximumBlockCount() and appendPlainText() turns QPlainTextEdit into an efficient viewer for log text. The scrolling can be reduced with the centerOnScroll() property, making the log viewer even faster. Text can be formatted in a limited way, either using a syntax highlighter (see below), or by appending html-formatted text with appendHtml(). While QPlainTextEdit does not support complex rich text rendering with tables and floats, it does support limited paragraph-based formatting that you may need in a log viewer..net

上一段引用來自Qt的幫助文檔。組合 QPlainTextEdit 的 setMaximumBlockCount()appendPlainText() 方法,來實現logger的顯示,能夠控制總共顯示的行數。線程

  • 優勢是更輕量級
  • 能夠利用HTML(<p><span>)進行簡單的高亮/行背景色。
  • 缺點,進行篩選相對麻煩

使用 QListWidget 或者 QTableWidget

能夠設置總行數來控制顯示的日誌數量。日誌

  • 缺點,相對厚重了些
  • 優勢,能夠方便的用不一樣顏色高亮Error,Warning等。
  • 優勢,能夠方便的進行篩選,快速找到error等。

單例模式

若是基於qDebug本身造輪子,並且日誌的顯示窗口須要常開,建議使用單例模式(參考CSDN 或更直接的【CSDN】)。code


參考:

相關文章
相關標籤/搜索