Logger.h 1.6 KB

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