LHQLogAPI.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #pragma once
  2. #include <QString>
  3. #include <QLibrary>
  4. #include <QTime>
  5. #include <QElapsedTimer>
  6. #include <QDebug>
  7. #define DoLog(msg) WRITE_LOG(QString("[%1:%2:%3] %4").arg(__FILE__, __FUNCTION__, QString::number(__LINE__), msg))
  8. #define DoError(msg) WRITE_ERROR(QString("[%1:%2:%3] %4").arg(__FILE__, __FUNCTION__, QString::number(__LINE__), msg))
  9. #define DoDebug(msg) WRITE_LOG_DEBUG(QString("[%1:%2:%3] %4").arg(__FILE__, __FUNCTION__, QString::number(__LINE__), msg))
  10. #define MyLog(msg) qDebug() << "[" << __FILE__ << __FUNCTION__ << __LINE__ << QTime::currentTime().toString("hh:mm:ss.zzz") << "]" << msg
  11. #define LimitLog(interval, msg) \
  12. do{\
  13. static QElapsedTimer timer;\
  14. if (!timer.isValid()) {\
  15. timer.start();\
  16. }\
  17. if (timer.elapsed() >= interval) {\
  18. timer.restart();\
  19. DoLog(msg);\
  20. }\
  21. }while(0);
  22. enum enLogType
  23. {
  24. ELT_Log_ALL = 0,
  25. // Debug.ini[system]Debug=1生效
  26. ELT_Log_Debug,
  27. // 错误日志,不自动删除和清空
  28. ELT_Log_Error,
  29. // 文件日志,就一个文件,超过10M自动清空,如记录xml,json的信息
  30. ELT_Log_File,
  31. // 一定会输出的日志
  32. // 操作日志,如点击按钮,按快捷键
  33. ELT_Log_Operator,
  34. // 仅仅主程序记录,按键日志
  35. ELT_Log_KeyDown,
  36. // 通用日志,无特殊标记
  37. ELT_Log_Common,
  38. };
  39. #define LH_WRITE_LOG(msg) WRITE_LOG(msg)
  40. #define LH_WRITE_ERROR(msg) WRITE_ERROR(msg)
  41. #define LH_WRITE_LOG_DEBUG(msg) WRITE_LOG_DEBUG(msg)
  42. extern void WRITE_LOG(QString log);
  43. extern void WRITE_ERROR(QString log);
  44. extern void WRITE_LOG_DEBUG(QString log);
  45. class CLHQLogApi
  46. {
  47. public:
  48. CLHQLogApi();
  49. ~CLHQLogApi();
  50. bool Load(QString file);
  51. int DoInitial(QString strLogName);
  52. // 为了适应,一个进程多模块日志的功能,需要给出Log名称
  53. int DoWriteLogEx(QString strLogName, int nLogType, QString strLog);
  54. int DoWriteFileLog(QString strLogFilePath, QString strLog);
  55. int DoWriteLog(int nLogType, QString strLog);
  56. private:
  57. typedef int (*FunDoInitial)(const char* szLogName);
  58. typedef int (*FunDoWriteLog)(const char* szLogName, int nLogType, const char* szLog);
  59. typedef int (*FunDoWriteFileLog)(const char* szFilePath, const char* szLog);
  60. private:
  61. QLibrary m_QLib;
  62. QString m_strLogName;
  63. FunDoInitial fnDoInitial;
  64. FunDoWriteLog fnDoWriteLog;
  65. FunDoWriteFileLog fnDoWriteFileLog;
  66. };
  67. extern CLHQLogApi g_apiLhQLog;