Logger.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #ifndef CORE_LOGGER_H
  2. #define CORE_LOGGER_H
  3. #include <stdio.h>
  4. #include "utils/String.h"
  5. namespace Core::Logger {
  6. enum class Level { ERROR, WARNING, INFO, DEBUG };
  7. extern Level level;
  8. }
  9. #if defined(LOG_LEVEL) && LOG_LEVEL >= 1
  10. #define LOG_ERROR(form, ...) \
  11. if(Core::Logger::level >= Core::Logger::Level::ERROR) { \
  12. printf("\33[1;31m[ERROR] "); \
  13. Core::String::format(form, __VA_ARGS__).print(); \
  14. printf("\33[39;49m\n"); \
  15. }
  16. #else
  17. #define LOG_ERROR(form, ...)
  18. #endif
  19. #if defined(LOG_LEVEL) && LOG_LEVEL >= 2
  20. #define LOG_WARNING(form, ...) \
  21. if(Core::Logger::level >= Core::Logger::Level::WARNING) { \
  22. printf("\33[1;33m[WARNING] "); \
  23. Core::String::format(form, __VA_ARGS__).print(); \
  24. printf("\33[39;49m\n"); \
  25. }
  26. #else
  27. #define LOG_WARNING(form, ...)
  28. #endif
  29. #if defined(LOG_LEVEL) && LOG_LEVEL >= 3
  30. #define LOG_INFO(form, ...) \
  31. if(Core::Logger::level >= Core::Logger::Level::INFO) { \
  32. printf("\33[1;37m[INFO] "); \
  33. Core::String::format(form, __VA_ARGS__).print(); \
  34. printf("\33[39;49m\n"); \
  35. }
  36. #else
  37. #define LOG_INFO(form, ...)
  38. #endif
  39. #if defined(LOG_LEVEL) && LOG_LEVEL >= 4
  40. #define LOG_DEBUG(form, ...) \
  41. if(Core::Logger::level >= Core::Logger::Level::DEBUG) { \
  42. printf("\33[1;32m[DEBUG] "); \
  43. Core::String::format(form, __VA_ARGS__).print(); \
  44. printf("\33[39;49m\n"); \
  45. }
  46. #else
  47. #define LOG_DEBUG(form, ...)
  48. #endif
  49. #endif