1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- #ifndef CORE_LOGGER_H
- #define CORE_LOGGER_H
- #include "core/Check.h"
- #include "core/Terminal.h"
- typedef enum { LOG_NONE, LOG_ERROR, LOG_WARNING, LOG_INFO, LOG_DEBUG } LogLevel;
- extern LogLevel logLevel;
- typedef void (*ReportHandler)(
- LogLevel l, const char* file, int line, void* data, const char* message);
- check_format(4, 5) void callReportHandler(
- LogLevel l, const char* file, int line, const char* format, ...);
- void setReportHandler(ReportHandler h, void* data);
- #define REPORT(l, ...) callReportHandler(l, __FILE__, __LINE__, __VA_ARGS__)
- const char* getShortFileName(const char* s);
- check_format(6, 7) void printLog(
- LogLevel l, const char* file, int line, const char* prefix, const char* tag,
- const char* format, ...);
- #if defined(LOG_LEVEL) && LOG_LEVEL >= 1
- #define LOG_ERROR(...) \
- printLog( \
- LOG_ERROR, __FILE__, __LINE__, TERMINAL_BRIGHT_RED, "[ERROR] ", \
- __VA_ARGS__)
- #else
- #define LOG_ERROR(...)
- #endif
- #if defined(LOG_LEVEL) && LOG_LEVEL >= 2
- #define LOG_WARNING(...) \
- printLog( \
- LOG_WARNING, __FILE__, __LINE__, TERMINAL_BRIGHT_YELLOW, "[WARNING] ", \
- __VA_ARGS__)
- #else
- #define LOG_WARNING(...)
- #endif
- #if defined(LOG_LEVEL) && LOG_LEVEL >= 3
- #define LOG_INFO(...) \
- printLog( \
- LOG_INFO, __FILE__, __LINE__, TERMINAL_BOLD, "[INFO] ", __VA_ARGS__)
- #else
- #define LOG_INFO(...)
- #endif
- #if defined(LOG_LEVEL) && LOG_LEVEL >= 4
- #define LOG_DEBUG(...) \
- printLog( \
- LOG_DEBUG, __FILE__, __LINE__, TERMINAL_BOLD TERMINAL_BRIGHT_BLACK, \
- "[DEBUG] ", __VA_ARGS__)
- #else
- #define LOG_DEBUG(...)
- #endif
- #endif
|