Logger.h 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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_NONE,
  11. CORE_LOG_ERROR,
  12. CORE_LOG_WARNING,
  13. CORE_LOG_INFO,
  14. CORE_LOG_DEBUG
  15. } CoreLogLevel;
  16. extern CoreLogLevel coreLogLevel;
  17. const char* coreGetShortFileName(const char* s);
  18. check_format(6, 7) void coreLog(CoreLogLevel 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. coreLog(CORE_LOG_ERROR, __FILE__, __LINE__, CORE_TERMINAL_RED, "[ERROR] ", \
  24. __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. coreLog(CORE_LOG_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. coreLog(CORE_LOG_INFO, __FILE__, __LINE__, CORE_TERMINAL_GRAY, "[INFO] ", \
  38. __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. coreLog(CORE_LOG_DEBUG, __FILE__, __LINE__, CORE_TERMINAL_GREEN, \
  45. "[DEBUG] ", __VA_ARGS__)
  46. #else
  47. #define CORE_LOG_DEBUG(...)
  48. #endif
  49. #ifdef IMPORT_CORE
  50. #define TERMINAL_RED CORE_TERMINAL_RED
  51. #define TERMINAL_YELLOW CORE_TERMINAL_YELLOW
  52. #define TERMINAL_GRAY CORE_TERMINAL_GRAY
  53. #define TERMINAL_GREEN CORE_TERMINAL_GREEN
  54. #define TERMINAL_RESET CORE_TERMINAL_RESET
  55. #define LogLevel CoreLogLevel
  56. #define LOG_NONE CORE_LOG_NONE
  57. #define LOG_ERROR CORE_LOG_ERROR
  58. #define LOG_WARNING CORE_LOG_WARNING
  59. #define LOG_INFO CORE_LOG_INFO
  60. #define LOG_DEBUG CORE_LOG_DEBUG
  61. #define logLevel coreLogLevel
  62. #define getShortFileName coreGetShortFileName
  63. #define LOG_ERROR CORE_LOG_ERROR
  64. #define LOG_WARNING CORE_LOG_WARNING
  65. #define LOG_INFO CORE_LOG_INFO
  66. #define LOG_DEBUG CORE_LOG_DEBUG
  67. #endif
  68. #endif