#pragma once #include #include #include #include #include #define DoLog(msg) WRITE_LOG(QString("[%1:%2:%3] %4").arg(__FILE__, __FUNCTION__, QString::number(__LINE__), msg)) #define DoError(msg) WRITE_ERROR(QString("[%1:%2:%3] %4").arg(__FILE__, __FUNCTION__, QString::number(__LINE__), msg)) #define DoDebug(msg) WRITE_LOG_DEBUG(QString("[%1:%2:%3] %4").arg(__FILE__, __FUNCTION__, QString::number(__LINE__), msg)) #define MyLog(msg) qDebug() << "[" << __FILE__ << __FUNCTION__ << __LINE__ << QTime::currentTime().toString("hh:mm:ss.zzz") << "]" << msg #define LimitLog(interval, msg) \ do{\ static QElapsedTimer timer;\ if (!timer.isValid()) {\ timer.start();\ }\ if (timer.elapsed() >= interval) {\ timer.restart();\ DoLog(msg);\ }\ }while(0); enum enLogType { ELT_Log_ALL = 0, // Debug.ini[system]Debug=1生效 ELT_Log_Debug, // 错误日志,不自动删除和清空 ELT_Log_Error, // 文件日志,就一个文件,超过10M自动清空,如记录xml,json的信息 ELT_Log_File, // 一定会输出的日志 // 操作日志,如点击按钮,按快捷键 ELT_Log_Operator, // 仅仅主程序记录,按键日志 ELT_Log_KeyDown, // 通用日志,无特殊标记 ELT_Log_Common, }; #define LH_WRITE_LOG(msg) WRITE_LOG(msg) #define LH_WRITE_ERROR(msg) WRITE_ERROR(msg) #define LH_WRITE_LOG_DEBUG(msg) WRITE_LOG_DEBUG(msg) extern void WRITE_LOG(QString log); extern void WRITE_ERROR(QString log); extern void WRITE_LOG_DEBUG(QString log); class CLHQLogApi { public: CLHQLogApi(); ~CLHQLogApi(); bool Load(QString file); int DoInitial(QString strLogName); // 为了适应,一个进程多模块日志的功能,需要给出Log名称 int DoWriteLogEx(QString strLogName, int nLogType, QString strLog); int DoWriteFileLog(QString strLogFilePath, QString strLog); int DoWriteLog(int nLogType, QString strLog); private: typedef int (*FunDoInitial)(const char* szLogName); typedef int (*FunDoWriteLog)(const char* szLogName, int nLogType, const char* szLog); typedef int (*FunDoWriteFileLog)(const char* szFilePath, const char* szLog); private: QLibrary m_QLib; QString m_strLogName; FunDoInitial fnDoInitial; FunDoWriteLog fnDoWriteLog; FunDoWriteFileLog fnDoWriteFileLog; }; extern CLHQLogApi g_apiLhQLog;