Logger.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #ifndef CORE_LOGGER_H
  2. #define CORE_LOGGER_H
  3. #include "core/Check.h"
  4. #include "core/Terminal.h"
  5. typedef enum { LOG_NONE, LOG_ERROR, LOG_WARNING, LOG_INFO, LOG_DEBUG } LogLevel;
  6. extern LogLevel logLevel;
  7. const char* getShortFileName(const char* s);
  8. check_format(6, 7) void printLog(
  9. LogLevel l, const char* file, int line, const char* prefix, const char* tag,
  10. const char* format, ...);
  11. #if defined(LOG_LEVEL) && LOG_LEVEL >= 1
  12. #define LOG_ERROR(...) \
  13. printLog( \
  14. LOG_ERROR, __FILE__, __LINE__, TERMINAL_BRIGHT_RED, "[ERROR] ", \
  15. __VA_ARGS__)
  16. #else
  17. #define LOG_ERROR(...)
  18. #endif
  19. #if defined(LOG_LEVEL) && LOG_LEVEL >= 2
  20. #define LOG_WARNING(...) \
  21. printLog( \
  22. LOG_WARNING, __FILE__, __LINE__, TERMINAL_BRIGHT_YELLOW, "[WARNING] ", \
  23. __VA_ARGS__)
  24. #else
  25. #define LOG_WARNING(...)
  26. #endif
  27. #if defined(LOG_LEVEL) && LOG_LEVEL >= 3
  28. #define LOG_INFO(...) \
  29. printLog( \
  30. LOG_INFO, __FILE__, __LINE__, TERMINAL_BOLD, "[INFO] ", __VA_ARGS__)
  31. #else
  32. #define LOG_INFO(...)
  33. #endif
  34. #if defined(LOG_LEVEL) && LOG_LEVEL >= 4
  35. #define LOG_DEBUG(...) \
  36. printLog( \
  37. LOG_DEBUG, __FILE__, __LINE__, TERMINAL_BOLD TERMINAL_BRIGHT_BLACK, \
  38. "[DEBUG] ", __VA_ARGS__)
  39. #else
  40. #define LOG_DEBUG(...)
  41. #endif
  42. #endif