inner_log.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. #ifndef LIBAOS_LOG_H
  2. #define LIBAOS_LOG_H
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <time.h>
  6. #include <stdarg.h>
  7. #include <string.h>
  8. #ifdef __cplusplus
  9. extern "C"
  10. {
  11. #endif
  12. //----------------------------------------------
  13. //使用举例
  14. //RvcLog_init("./log/Proxy_a",1); //初始化
  15. //MFLog(LM_INFO,(LB,"test%d %s[%X]",i,"info test",(unsigned int)i)); //写info日志
  16. //MFLog(LM_DEBUG,(LB,"test%d",i)); //写debug日志
  17. //MFLog(LM_SYSTEM,(LB,"test%d",i)); //写system日志
  18. //MFLog(LM_WARNING,(LB,"test%d",i)); //写warn日志
  19. //MFLog(LM_ERROR,(LB,"test%d",i)); //写error日志
  20. //RvcLog_destroy(); //销毁
  21. //---------------------------------------------
  22. enum LogPriority
  23. {
  24. // = Note, this first argument *must* start at 1!
  25. LM_OFF = 0,
  26. /// Messages that contain information normally of use only when
  27. /// debugging a program (decimal 1).
  28. LM_DEBUG = 01,
  29. /// Messages indicating function-calling sequence (decimal 2).
  30. LM_TRACE = 02,
  31. /// Informational messages (decimal 4).
  32. LM_INFO = 04,
  33. /// Conditions that are not error conditions, but that may require
  34. /// special handling (decimal 8).
  35. LM_NOTICE = 010,
  36. /// Warning messages (decimal 16).
  37. LM_WARNING = 020,
  38. /// Error messages (decimal 32).
  39. LM_ERROR = 040,
  40. /// Critical conditions, such as hard device errors (decimal 128).
  41. LM_CRITICAL = 0100,
  42. /// The maximum logging priority.
  43. LM_MAX = LM_CRITICAL,
  44. /// Do not use!! This enum value ensures that the underlying
  45. /// integral type for this enum is at least 32 bits.
  46. LM_ENSURE_32_BITS = 0x7FFFFFFF
  47. };
  48. #ifndef _WIN32
  49. #define _snprintf snprintf
  50. #endif //NOT _WIN32
  51. #define MFLOG_BUFSIZE 2047
  52. #define MF_LOG_STR_BUFSIZE (16*1024L)
  53. #define LB szLogBuf, MFLOG_BUFSIZE
  54. char* AllocLogBuf(void);
  55. //void FreeLogBuf( char *pLogBuf );
  56. //公用方法
  57. void MakeLogPrefix(int nLevel, char* szLevel, char* szTime);
  58. int RvcLog_init(const char* log_dir, const char* log_name, int level, int show_file_line);
  59. int RvcLog_destroy();
  60. int RvcLog_log(const char* szSrcFileName, int iLine, int console, int iLevel, char* szLevel, char* szTime, char* szLog);
  61. #define aos_debug_log(Z) \
  62. do \
  63. { \
  64. char *szLogBuf = AllocLogBuf(); \
  65. char szLevel[10]; \
  66. char szTime[32]; \
  67. szLogBuf[MFLOG_BUFSIZE] = '\0'; \
  68. MakeLogPrefix( LM_DEBUG, szLevel, szTime ); \
  69. _snprintf Z; \
  70. RvcLog_log( __FILE__,__LINE__, 1, LM_DEBUG, szLevel, szTime, szLogBuf); \
  71. }while(0)
  72. #define aos_info_log(Z) \
  73. do \
  74. { \
  75. char *szLogBuf = AllocLogBuf(); \
  76. char szLevel[10]; \
  77. char szTime[32]; \
  78. szLogBuf[MFLOG_BUFSIZE] = 0; \
  79. MakeLogPrefix( LM_INFO, szLevel, szTime ); \
  80. _snprintf Z; \
  81. RvcLog_log( __FILE__,__LINE__, 1, LM_INFO, szLevel, szTime, szLogBuf); \
  82. }while(0)
  83. #define aos_warn_log(Z) \
  84. do \
  85. { \
  86. char *szLogBuf = AllocLogBuf(); \
  87. char szLevel[10]; \
  88. char szTime[32]; \
  89. szLogBuf[MFLOG_BUFSIZE] = 0; \
  90. MakeLogPrefix( LM_WARNING, szLevel, szTime ); \
  91. _snprintf Z; \
  92. RvcLog_log( __FILE__,__LINE__, 1, LM_WARNING, szLevel, szTime, szLogBuf); \
  93. }while(0)
  94. #define aos_error_log(Z) \
  95. do \
  96. { \
  97. char *szLogBuf = AllocLogBuf(); \
  98. char szLevel[10]; \
  99. char szTime[32]; \
  100. szLogBuf[MFLOG_BUFSIZE] = 0; \
  101. MakeLogPrefix( LM_ERROR, szLevel, szTime ); \
  102. _snprintf Z; \
  103. RvcLog_log( __FILE__,__LINE__, 1, LM_ERROR, szLevel, szTime, szLogBuf); \
  104. }while(0)
  105. #define aos_fatal_log(Z) \
  106. do \
  107. { \
  108. char *szLogBuf = AllocLogBuf(); \
  109. char szLevel[10]; \
  110. char szTime[32]; \
  111. szLogBuf[MFLOG_BUFSIZE] = 0; \
  112. MakeLogPrefix( LM_CRITICAL, szLevel, szTime ); \
  113. _snprintf(LB, Z); \
  114. RvcLog_log( __FILE__,__LINE__, 1, LM_CRITICAL, szLevel, szTime, szLogBuf); \
  115. }while(0)
  116. #ifdef __cplusplus
  117. }
  118. #endif
  119. #endif