Qt5之 簡單的日誌記錄工具類
qt5 自己做的一個讀寫 sqlite3 的資料工具,能開啟sqlite3格式的資料庫檔案
完善前面的文章中提到的工具,最近在實戰中遇到了不少問題,故增加日誌記錄功能,記錄軟體的一些資訊,方便查詢問題
Qt 5 , mingw
------------- 上程式碼-------------
類名 :
HLogHelper
標頭檔案
#ifndef HLOGHELPER_H #define HLOGHELPER_H #include <QObject> #include <QFile> #include <QTextStream> #include <QMutex> #include <QDateTime> // 日誌記錄類 class HLogHelper : public QObject { Q_OBJECT public: HLogHelper(); //--------------------------------------------------------------- // 設定檔名字首,ABC_20180909_131415.log, 這裡,引數就傳遞 ABC // 若不傳遞引數,預設以日期的方式命名:20180909_131415.log // 函式返回值: 0 - 建立檔案成功, // 1 - 開啟檔案失敗 int HInit(QString strFilePre); // 物件銷燬時,關閉檔案 // 返回值: 1 - 關閉失敗,檔案已經關閉 // 0 - 關閉成功 int HUnInit(); //--------------------------------------------------------------- // 時間 + 記錄內容 int HLogTime(QString str ...); // 記錄內容 int HLog(QString str...); private: enum { // 日誌檔案大小 he_log_file_size_1024kb = 1024, }; private: QString m_FileLogName; QFile m_File; QTextStream m_LogTextStream; QMutex m_FileLogMutex; QDateTime m_DateTime; }; #endif // HLOGHELPER_H
.cpp檔案
#include "hloghelper.h" #include <QObject> #include <QDir> #include <QApplication> #include <cstdarg> #include <QByteArray> HLogHelper::HLogHelper() { m_FileLogName = QString(""); } // 初始化建立檔案並開啟檔案 int HLogHelper::HInit(QString strFilePre) { int len = strFilePre.length(); QString fileName(""); // 設定檔名 // 1、若strFilePre不為空 if (0 < len) { // 獲取當前日期 QString date = m_DateTime.currentDateTime().toString("yyyy_MM_dd_hh_mm_ss_zzz"); fileName = strFilePre + QString("_") + date; } else { // QString date = m_DateTime.currentDateTime().toString("yyyy_MM_dd_hh_mm_ss_zzz"); fileName = date; } m_FileLogName = fileName + QString("_.log"); // 2、開啟檔案 // 若當前exe所在目錄下不存在 HLog資料夾,則建立 QString logPath = QApplication::applicationDirPath() + QString("/HLog/"); QDir dir(logPath); if (false == dir.exists()) { dir.mkpath(logPath); } // 構造檔案 m_FileLogName = logPath + m_FileLogName; m_File.setFileName(m_FileLogName); bool openFlag = m_File.open(QIODevice::Text | QIODevice::Truncate | QIODevice::WriteOnly | QIODevice::Append); if (false == openFlag) { return 1; } m_LogTextStream.setDevice(&m_File); return 0; } // 關閉檔案 int HLogHelper::HUnInit() { bool isExist = m_File.exists(m_FileLogName); // 若不存在 if (false == isExist) { return 1; } // 檔案存在,檢查檔案是否已經開啟 bool hasOepned = m_File.isOpen(); // 檔案打開了 if (true == hasOepned) { m_File.flush(); m_File.close(); } return 0; } // 日誌記錄前帶日期 int HLogHelper::HLogTime(QString str...) { // 獲取當前日期 QString date = m_DateTime.currentDateTime().toString("yyyy_MM_dd hh_mm_ss_zzz:"); QByteArray ba = (date + str).toLocal8Bit(); char *pArr = ba.data(); va_list al; va_start(al, pArr); QString strResult = QString::vasprintf(pArr, al); va_end(al); m_LogTextStream << strResult << endl; m_LogTextStream.flush(); return 0; } // 日誌前不帶日期 int HLogHelper::HLog(QString str...) { QByteArray ba = str.toLocal8Bit(); char *pArr = ba.data(); va_list al; va_start(al, pArr); QString strResult = QString::vasprintf(pArr, al); va_end(al); m_LogTextStream << strResult << endl; m_LogTextStream.flush(); return 0; }
說明:
1、使用方法,首先需要呼叫 HInit設定日誌檔名先關資訊,並開啟檔案
2、記錄日誌有2種方法,一種是每一行記錄前面支援日期, 另一種則不支援記錄日期。
3、該類會在 exe所在目錄建立一個 HLog 資料夾,用於存放日誌檔案
不足:
1、沒有指定日誌檔案的大小,可以一直向檔案寫入,很不友好,
2、沒有增加刪除日誌,比如,軟體自動刪除前1個月的日誌
針對這些不足,後期維護補上..........................................
Ex:
設定日誌名
#ifdef he_use_log m_Log.HInit(QString("ABC")); #endif//he_use_log
記錄日誌
#ifdef he_use_log
m_Log.HLogTime(QString("void Dialog::TopMenuStartSlotOpen() start"));
#endif // he_use_log
--- 完-----
相關推薦
Qt5之 簡單的日誌記錄工具類
qt5 自己做的一個讀寫 sqlite3 的資料工具,能開啟sqlite3格式的資料庫檔案 完善前面的文章中提到的工具,最近在實戰中遇到了不少問題,故增加日誌記錄功能,記錄軟體的一些資訊,方便查詢問題 Qt 5 , mingw ------------- 上
(工具類)Linux筆記之終端日誌記錄工具script
工具類 article 空間 post 令行 有時 可能 關於 edit 在學習Linux時,有時候終端的打印消息對於我們很重要,可是終端顯示也是有一定的緩沖空間的。當信息打印許多時,前面的信息就會被覆蓋掉。所以這裏網上搜索了一下這方面的介紹。現總結例如以下:
封裝一個基於NLog+NLog.Mongo的日誌記錄工具類LogUtil
edi day rap ble mongo return 情況 earch ati 封裝一個基於NLog+NLog.Mongo的日誌記錄工具類LogUtil,代碼比較簡單,主要是把MongoTarget的配置、FileTarget的配置集成到類中,同時利用緩存依賴來判斷是否
Oracle 日誌記錄工具類
在我們編寫儲存過程,或者PKG時,總有一些異常情況考慮不到;為了快速排查定位問題,需要及時記錄異常日誌; 1.建表語句 : 異常日誌表;正常日誌表 create table SSS.TC_EXCEPTION_LOG ( l
日誌記錄工具類
import org.apache.log4j.Logger;public class LogUnits { private static Logger logger = null; public static void logException(Exception e){
從壹開始前後端分離【 .NET Core2.0 +Vue2.0 】框架之十 || AOP面向切面程式設計淺解析:簡單日誌記錄 + 服務切面快取
今天的講解就到了這裡了,通過這兩個小栗子,大家應該能對面向切面程式設計有一些朦朧的感覺了吧
core學習歷程五 從壹開始前後端分離【 .NET Core2.0 +Vue2.0 】框架之十 || AOP面向切面程式設計淺解析:簡單日誌記錄 + 服務切面快取 從壹開始前後端分離【 .NET Core2.0 +Vue2.0 】框架之十一 || AOP自定義篩選,Redis入門 11.1
繼續學習 “老張的哲學”博主的系列教程,感謝大神們的無私分享 從壹開始前後端分離【 .NET Core2.0 +Vue2.0 】框架之十 || AOP面向切面程式設計淺解析:簡單日誌記錄 + 服務切面快取 說是朦朧,,emmm,對我來說是迷糊哈。上半段正常,下半段有點難理解,操作是沒問題。多看幾遍再消
JDK5新特性之線程同步工具類(三)
string 兩個人 exec random 主線程 一個人 exce print exchange 一. Semaphore Semaphore能夠控制同一時候訪問資源的線程個數, 比如: 實現一個文件同意的並發訪問數. Semaphore實現的功能就類似廁全部5個坑
日誌記錄工具 log4net 的配置與使用
ole 彈出菜單 pen logs 日誌組 RR log4net amp extension 項目的日誌組件是必備可少的,任何項目中都需要。這樣既方便前期的開發測試也方便項目後期的項目維護。C#項目的一個不錯的日誌組件是log4net,下面我就把程序項目中log4net的如
Java日誌記錄工具SLF4J介紹
ack imp 配置文件 index log4j alt title pri tps SLF4J是什麽 SLF4J是一個包裝類,典型的facade模式的工具,對用戶呈現統一的操作方式,兼容各種主流的日誌記錄框架,典型的有log4j/jdk logging/nop/simpl
PHP之簡單的分頁類
lang ger star try select tar -h code doc pageClass.php <?php class Page{ private $total;//總條數 private $size;//每頁條數 priva
適用於Linux的開源日誌記錄工具
如果您是Linux系統管理員,那麼您將要使用的第一個工具是日誌檔案。 這些檔案包含重要資訊,可以幫助您解決影響桌面和伺服器的問題。 對於許多系統管理員(特別是那些舊式的系統管理員),沒有什麼比檢查日誌檔案更好的命令列。 但對於那些寧願採用更有效(也可能是現代)方法進行故障排除的人來說,有很多選擇。 在本文中
Android開發之訪問WebService的工具類
Android中使用WebService通訊,下面對訪問WebService的工具類進行記錄 package com.wjy.project.railway.tools; import android.os.Handler; import android.os.Message;
【java小程式實戰】小程式短視訊後端專案之返回結果包裝工具類
在開發過程中,我們在controller 中把需要返回的結果封裝成一個IMoocJSONResult類,再把資料轉換為json格式,傳送到前端頁面。 IMoocJSONResult類程式碼: package com.imooc.utils; /** * @Description: 自
Java_Log4j日誌記錄工具
【1】在工程中匯入log4j包 右鍵工程 - Properties 【2】建立log4j.properties檔案 右鍵src > new > file file name 填寫log4j.properties
Stoker的Java學習之封裝資料庫連線工具類與commons-dbutils
Java學習之封裝資料庫連線工具類與commons-dbutils 一.封裝資料庫連結工具類 public class JDBCUitl { // 宣告連結 private static Connection connection; // 註冊驅動 st
Spring Aop實現簡單日誌記錄
日誌類 package com.jusfoun.estate.log.domain; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; import java
簡單小巧倒計時工具類 android
android 簡單小巧倒計時工具類 借鑑前人經驗的基礎上改動 廢話不多說了,先上效果圖 看到這裡說明有點用,給你個程式碼 工具類使用示例 感覺有用,順手點個贊,收藏一下,有備無患 借鑑前人經驗的基礎
Android 常用開發工具類之 SPUtils (SharedPreference 工具類)
開發過程中難免會遇到如持久儲存使用者資訊等需求,而由於資料量很少感覺使用 Sql 有些殺雞用牛刀的感覺也有些累贅。所以善於使用 SharedPreference 可以幫助我們在本地儲存一些資料量少,又使用很頻繁的東西。 SPUtils 一個可以幫助我們很簡潔的使用 Sha
Java網路程式設計之URLEncode和URLDecode工具類
import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; public class EncodeTest {