LHQLogAPI.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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. extern void WRITE_LOG(QString log);
  40. extern void WRITE_ERROR(QString log);
  41. extern void WRITE_LOG_DEBUG(QString log);
  42. class CLHQLogApi
  43. {
  44. public:
  45. CLHQLogApi();
  46. ~CLHQLogApi();
  47. bool Load(QString file);
  48. int DoInitial(QString strLogName);
  49. // 为了适应,一个进程多模块日志的功能,需要给出Log名称
  50. int DoWriteLogEx(QString strLogName, int nLogType, QString strLog);
  51. int DoWriteFileLog(QString strLogFilePath, QString strLog);
  52. int DoWriteLog(int nLogType, QString strLog);
  53. private:
  54. typedef int (*FunDoInitial)(const char* szLogName);
  55. typedef int (*FunDoWriteLog)(const char* szLogName, int nLogType, const char* szLog);
  56. typedef int (*FunDoWriteFileLog)(const char* szFilePath, const char* szLog);
  57. private:
  58. QLibrary m_QLib;
  59. QString m_strLogName;
  60. FunDoInitial fnDoInitial;
  61. FunDoWriteLog fnDoWriteLog;
  62. FunDoWriteFileLog fnDoWriteFileLog;
  63. };
  64. extern CLHQLogApi g_apiLhQLog;