12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #pragma once
- #include <QString>
- #include <QLibrary>
- #include <QTime>
- #include <QElapsedTimer>
- #include <QDebug>
- #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;
|