LoggerModule.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #ifndef LOGGER1_H
  2. #define LOGGER1_H
  3. #include "LoggerModule_global.h"
  4. #include <QObject>
  5. class LOGGER1_EXPORT LogHelper
  6. {
  7. Q_DISABLE_COPY(LogHelper)
  8. public:
  9. Q_DECL_CONSTEXPR LogHelper()
  10. : version_(1),
  11. line_(0),
  12. file_(Q_NULLPTR),
  13. function_(Q_NULLPTR)
  14. {
  15. }
  16. LogHelper(const char *fileName, int lineNumber, const char *functionName);
  17. enum LogType
  18. {
  19. LGDebugMsg,
  20. LGInfoMsg,
  21. LGWarningMsg,
  22. LGErrorMsg,
  23. LGFatalMsg
  24. };
  25. QString TemplateParameter ()
  26. {
  27. return "";
  28. }
  29. template <typename T, typename ... Args>
  30. QString TemplateParameter(T head, Args ... args)
  31. {
  32. return QString("%1 ").arg(head) + TemplateParameter(args...);
  33. }
  34. template <typename T, typename ... Args>
  35. void debug(T head, Args ... args)
  36. {
  37. QString logmsg = QString("%1 ").arg(head) + TemplateParameter(args...);
  38. writelogToLocal(LGDebugMsg,logmsg);
  39. }
  40. template <typename T, typename ... Args>
  41. void info(T head, Args ... args)
  42. {
  43. QString logmsg = QString("%1 ").arg(head) + TemplateParameter(args...);
  44. writelogToLocal(LGInfoMsg,logmsg);
  45. }
  46. template <typename T, typename ... Args>
  47. void warn(T head, Args ... args)
  48. {
  49. QString logmsg = QString("%1 ").arg(head) + TemplateParameter(args...);
  50. writelogToLocal(LGWarningMsg,logmsg);
  51. }
  52. template <typename T, typename ... Args>
  53. void error(T head, Args ... args )
  54. {
  55. QString logmsg = QString("%1 ").arg(head) + TemplateParameter(args...);
  56. writelogToLocal(LGErrorMsg,logmsg);
  57. }
  58. template <typename T, typename ... Args>
  59. void fatal(T head, Args ... args)
  60. {
  61. QString logmsg = QString("%1 ").arg(head) + TemplateParameter(args...);
  62. writelogToLocal(LGFatalMsg,logmsg);
  63. }
  64. virtual void writelogToLocal(LogType logtype, const QString& logmsg);
  65. virtual void copy(const LogHelper &logContext)
  66. {
  67. Q_UNUSED(logContext)
  68. }
  69. template <typename T>
  70. inline LogHelper &operator<<(T logmsg)
  71. {
  72. writelogToLocal(LGInfoMsg, QString("%1").arg(logmsg));
  73. return *this;
  74. }
  75. public:
  76. static bool showFileFuncLine_;
  77. int version_;
  78. int line_;
  79. const char *file_;
  80. const char *function_;
  81. public:
  82. static inline LogHelper* getSingletonPtr()
  83. {
  84. return &getSingleton();
  85. }
  86. static inline LogHelper& getSingleton()
  87. {
  88. static LogHelper _instance;
  89. return _instance;
  90. }
  91. };
  92. #define g_Logger LogHelper::getSingleton()
  93. #define g_pLogger LogHelper::getSingletonPtr()
  94. //////////////////////////////////////////////////////////////////////////
  95. // 断言日志
  96. //////////////////////////////////////////////////////////////////////////
  97. #define ASSERT_LOG(expr)\
  98. if ( (expr) ) {;} else g_Logger.Error(0, __FILE__, __LINE__, #expr);
  99. #endif // LOGGER1_H