Logger.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #ifndef CORE_LOGGER_H
  2. #define CORE_LOGGER_H
  3. #include "core/Check.h"
  4. #define TERMINAL_BOLD "\33[1m"
  5. #define TERMINAL_BLACK "\33[30m"
  6. #define TERMINAL_RED "\33[31m"
  7. #define TERMINAL_GREEN "\33[32m"
  8. #define TERMINAL_YELLOW "\33[33m"
  9. #define TERMINAL_BLUE "\33[34m"
  10. #define TERMINAL_MAGENTA "\33[35m"
  11. #define TERMINAL_CYAN "\33[36m"
  12. #define TERMINAL_WHITE "\33[37m"
  13. #define TERMINAL_BRIGHT_BLACK "\33[90m"
  14. #define TERMINAL_BRIGHT_RED "\33[91m"
  15. #define TERMINAL_BRIGHT_GREEN "\33[92m"
  16. #define TERMINAL_BRIGHT_YELLOW "\33[93m"
  17. #define TERMINAL_BRIGHT_BLUE "\33[94m"
  18. #define TERMINAL_BRIGHT_MAGENTA "\33[95m"
  19. #define TERMINAL_BRIGHT_CYAN "\33[96m"
  20. #define TERMINAL_BRIGHT_WHITE "\33[97m"
  21. #define TERMINAL_RESET "\33[0m"
  22. typedef enum { LOG_NONE, LOG_ERROR, LOG_WARNING, LOG_INFO, LOG_DEBUG } LogLevel;
  23. extern LogLevel logLevel;
  24. const char* getShortFileName(const char* s);
  25. check_format(6, 7) void printLog(LogLevel l, const char* file, int line,
  26. const char* prefix, const char* tag,
  27. const char* format, ...);
  28. #if defined(LOG_LEVEL) && LOG_LEVEL >= 1
  29. #define LOG_ERROR(...) \
  30. printLog(LOG_ERROR, __FILE__, __LINE__, TERMINAL_BRIGHT_RED, "[ERROR] ", \
  31. __VA_ARGS__)
  32. #else
  33. #define LOG_ERROR(...)
  34. #endif
  35. #if defined(LOG_LEVEL) && LOG_LEVEL >= 2
  36. #define LOG_WARNING(...) \
  37. printLog(LOG_WARNING, __FILE__, __LINE__, TERMINAL_BRIGHT_YELLOW, \
  38. "[WARNING] ", __VA_ARGS__)
  39. #else
  40. #define LOG_WARNING(...)
  41. #endif
  42. #if defined(LOG_LEVEL) && LOG_LEVEL >= 3
  43. #define LOG_INFO(...) \
  44. printLog(LOG_INFO, __FILE__, __LINE__, TERMINAL_BOLD, "[INFO] ", \
  45. __VA_ARGS__)
  46. #else
  47. #define LOG_INFO(...)
  48. #endif
  49. #if defined(LOG_LEVEL) && LOG_LEVEL >= 4
  50. #define LOG_DEBUG(...) \
  51. printLog(LOG_DEBUG, __FILE__, __LINE__, \
  52. TERMINAL_BOLD TERMINAL_BRIGHT_BLACK, "[DEBUG] ", __VA_ARGS__)
  53. #else
  54. #define LOG_DEBUG(...)
  55. #endif
  56. #endif