Qt 實現 Logger 日誌的顯示
Qt qDebug or 開源庫
基於 Qt qDebug
Qt 提供 qInstallMessageHandler(Qt5)
或者qInstallMsgHandler(Qt4)
,可以對QDebug、QWarning、QError等進行重定向等處理。
可以參考Qt Assistant 的幫助文件,或者參考Qt之日誌輸出檔案進行實現。
- 缺點: 沒有嘗試過,但是有人不支援多執行緒,至少需要自己去考慮多執行緒安全問題
- 缺點: 如果想要讓訊息既存檔,又同時在視窗Widget中顯示,可能會麻煩點
- 需要自己實現檔案大小的判斷,以及歷史檔案的備份
- 如果只是將日誌重定向至某個檔案,不需要顯示,這方法挺好。推薦。
開源庫
QsLog (個人推薦)
簡單的日誌框架,可以新增多個日誌的destination,可以使用Signal/Slot機制方便的將日誌輸出到Widget。
專案地址:QsLog的Bitbucket地址
QxtLogger
QxtLib的一部分,如果也是用QxtLib的其他功能,肯定也會用這個。但是我沒用過
專案地址:QxtLogger Class Reference
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()
andappendPlainText()
turnsQPlainTextEdit
into an efficient viewer for log text. The scrolling can be reduced with thecenterOnScroll()
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 withappendHtml()
. WhileQPlainTextEdit
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.
上一段引用來自Qt的幫助文件。組合 QPlainTextEdit 的setMaximumBlockCount()
和 appendPlainText()
方法,來實現logger的顯示,可以控制總共顯示的行數。
- 優點是更輕量級
- 可以利用HTML(<p><span>)進行簡單的高亮/行背景色。
- 缺點,進行篩選相對麻煩
使用 QListWidget 或者 QTableWidget
可以設定總行數來控制顯示的日誌數量。
- 缺點,相對厚重了些
- 優點,可以方便的用不同顏色高亮Error,Warning等。
- 優點,可以方便的進行篩選,快速找到error等。
單例模式
如果基於qDebug自己造輪子,而且日誌的顯示視窗需要常開,建議使用單例模式(參考CSDN 或更直接的【CSDN】)。
參考:
相關文章
- 八、Qt Creator實現狀態列顯示QT
- QT實現動態顯示系統時間QT
- nginx日誌中顯示cookie資訊NginxCookie
- qt中實現實時的顯示當前時刻的時間QT
- QT介面顯示實時時間QT
- qt 單獨執行緒實現日誌寫入功能QT執行緒
- QT學習 實時顯示時間QT
- Qt實時顯示系統時間QT
- 【Qt】UI顯示中文QTUI
- Qt 時間顯示QT
- 使用C++和QT實現Log自定義日誌系統C++QT
- Qt中顯示OpenCV的IplImageQTOpenCV
- 日誌庫 winston 的學習筆記 - logger.info 的實現原理單步除錯筆記除錯
- CSS實現限制顯示的字數,超出顯示"..."CSS
- QT居中螢幕顯示QT
- qt視窗居中顯示QT
- PHPstrom 配置 Laravel Log 格式日誌高亮顯示PHPLaravel
- YD_顯示RMAN備份資訊及日誌
- HQ_顯示RMAN備份資訊及日誌
- 日誌庫 winston 的學習筆記 - logger.info 列印到控制檯上的實現原理筆記
- Python 日誌列印之自定義logger handlerPython
- 深入理解Logger日誌——框架繫結原理框架
- python logger 列印日誌錯誤行數Python
- 【Rust】使用日誌記錄利器flexi_loggerRustFlex
- SAP ABAP RFC介面通用日誌工具:abap fm logger
- qt-實時顯示本地時間、以及QDateTime的使用QT
- QT4 用QLabel實時顯示時間QT
- Flume 實現自己的實時日誌(2)
- Geoserver + MySQL實現圖層顯示和文字顯示ServerMySql
- Qt 讓彈出的視窗居中顯示QT
- QT顯示當前日期時間QT
- Qt 設定視窗居中顯示QT
- QT時鐘控制元件顯示QT控制元件
- Qt中在按鈕上顯示字元'&'QT字元
- QT設定標籤顯示位置QT
- QT tableWidget 內容居中顯示QT
- QT版用QLCDnumber顯示時間QT
- Qt5:視窗居中顯示QT