Logger.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #ifndef CORE_LOGGER_HPP
  2. #define CORE_LOGGER_HPP
  3. #include <stdio.h>
  4. #include "core/utils/Check.h"
  5. #define CORE_TERMINAL_RED "\33[1;31m"
  6. #define CORE_TERMINAL_YELLOW "\33[1;33m"
  7. #define CORE_TERMINAL_GRAY "\33[1;37m"
  8. #define CORE_TERMINAL_GREEN "\33[1;32m"
  9. #define CORE_TERMINAL_RESET "\33[0m"
  10. typedef enum {
  11. LOG_LEVEL_ERROR,
  12. LOG_LEVEL_WARNING,
  13. LOG_LEVEL_INFO,
  14. LOG_LEVEL_DEBUG
  15. } Logger_Level;
  16. extern Logger_Level logLevel;
  17. const char* Logger_getShortFileName(const char* s);
  18. check_format(6, 7) void Logger_log(Logger_Level l, const char* file, int line,
  19. const char* prefix, const char* tag,
  20. const char* format, ...);
  21. #if defined(CORE_LOG_LEVEL) && CORE_LOG_LEVEL >= 1
  22. #define CORE_LOG_ERROR(...) \
  23. Logger_log(LOG_LEVEL_ERROR, __FILE__, __LINE__, CORE_TERMINAL_RED, \
  24. "[ERROR] ", __VA_ARGS__);
  25. #else
  26. #define CORE_LOG_ERROR(...)
  27. #endif
  28. #if defined(CORE_LOG_LEVEL) && CORE_LOG_LEVEL >= 2
  29. #define CORE_LOG_WARNING(...) \
  30. Logger_log(LOG_LEVEL_WARNING, __FILE__, __LINE__, CORE_TERMINAL_YELLOW, \
  31. "[WARNING] ", __VA_ARGS__);
  32. #else
  33. #define CORE_LOG_WARNING(...)
  34. #endif
  35. #if defined(CORE_LOG_LEVEL) && CORE_LOG_LEVEL >= 3
  36. #define CORE_LOG_INFO(...) \
  37. Logger_log(LOG_LEVEL_INFO, __FILE__, __LINE__, CORE_TERMINAL_GRAY, \
  38. "[INFO] ", __VA_ARGS__);
  39. #else
  40. #define CORE_LOG_INFO(...)
  41. #endif
  42. #if defined(CORE_LOG_LEVEL) && CORE_LOG_LEVEL >= 4
  43. #define CORE_LOG_DEBUG(...) \
  44. Logger_log(LOG_LEVEL_DEBUG, __FILE__, __LINE__, CORE_TERMINAL_GREEN, \
  45. "[DEBUG] ", __VA_ARGS__);
  46. #else
  47. #define CORE_LOG_DEBUG(...)
  48. #endif
  49. #endif