hlog.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #ifndef HW_LOG_H_
  2. #define HW_LOG_H_
  3. #define CL_CLR "\033[0m" /* 恢复颜色 */
  4. #define CL_BLACK "\033[30m" /* 黑色字 */
  5. #define CL_RED "\e[1;31m" /* 红色字 */
  6. #define CL_GREEN "\e[1;32m" /* 绿色字 */
  7. #define CL_YELLOW "\e[1;33m" /* 黄色字 */
  8. #define CL_BLUE "\033[34m" /* 蓝色字 */
  9. #define CL_PURPLE "\e[1;35m" /* 紫色字 */
  10. #define CL_SKYBLUE "\e[1;36m" /* 天蓝字 */
  11. #define CL_WHITE "\033[37m" /* 白色字 */
  12. #define CL_BLK_WHT "\033[40;37m" /* 黑底白字 */
  13. #define CL_RED_WHT "\033[41;37m" /* 红底白字 */
  14. #define CL_GRE_WHT "\033[42;37m" /* 绿底白字 */
  15. #define CL_YEW_WHT "\033[43;37m" /* 黄底白字 */
  16. #define CL_BLUE_WHT "\033[44;37m" /* 蓝底白字 */
  17. #define CL_PPL_WHT "\033[45;37m" /* 紫底白字 */
  18. #define CL_SKYB_WHT "\033[46;37m" /* 天蓝底白字 */
  19. #define CL_WHT_BLK "\033[47;30m" /* 白底黑字 */
  20. // F(id, str, clr)
  21. #define FOREACH_LOG(F) \
  22. F(LOG_LEVEL_DEBUG, "DEBUG", CL_WHITE) \
  23. F(LOG_LEVEL_INFO, "INFO ", CL_GREEN) \
  24. F(LOG_LEVEL_WARN, "WARN ", CL_YELLOW) \
  25. F(LOG_LEVEL_ERROR, "ERROR", CL_RED) \
  26. F(LOG_LEVEL_FATAL, "FATAL", CL_RED_WHT)
  27. enum LOG_LEVEL {
  28. LOG_LEVEL_NONE = 0,
  29. #define ENUM_LOG(id, str, clr) id,
  30. FOREACH_LOG(ENUM_LOG)
  31. #undef ENUM_LOG
  32. };
  33. #define DEFAULT_LOG_FILE "./default.log"
  34. #define DEFAULT_LOG_LEVEL LOG_LEVEL_NONE
  35. int hlog_set_file(const char* file);
  36. void hlog_set_level(int level);
  37. void hlog_enable_color(bool enable);
  38. int hlog_printf(int level, const char* fmt, ...);
  39. #define hlogd(fmt, ...) hlog_printf(LOG_LEVEL_DEBUG, fmt " [%s:%d:%s]", ## __VA_ARGS__, __FILE__, __LINE__, __FUNCTION__)
  40. #define hlogi(fmt, ...) hlog_printf(LOG_LEVEL_INFO, fmt " [%s:%d:%s]", ## __VA_ARGS__, __FILE__, __LINE__, __FUNCTION__)
  41. #define hlogw(fmt, ...) hlog_printf(LOG_LEVEL_WARN, fmt " [%s:%d:%s]", ## __VA_ARGS__, __FILE__, __LINE__, __FUNCTION__)
  42. #define hloge(fmt, ...) hlog_printf(LOG_LEVEL_ERROR, fmt " [%s:%d:%s]", ## __VA_ARGS__, __FILE__, __LINE__, __FUNCTION__)
  43. #define hlogf(fmt, ...) hlog_printf(LOG_LEVEL_FATAL, fmt " [%s:%d:%s]", ## __VA_ARGS__, __FILE__, __LINE__, __FUNCTION__)
  44. #endif // HW_LOG_H_