Logger.h 1.8 KB

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