diff --git a/src/log.c b/src/log.c new file mode 100644 index 0000000..b153b09 --- /dev/null +++ b/src/log.c @@ -0,0 +1,3 @@ +#include "log.h" + +unsigned int logLevel = LOG_LEVEL_ERROR; \ No newline at end of file diff --git a/src/log.h b/src/log.h new file mode 100644 index 0000000..df86aa2 --- /dev/null +++ b/src/log.h @@ -0,0 +1,31 @@ +#ifndef LOG_H +#define LOG_H + +#include +#include +#include + +#define LOG_LEVEL_NONE 0 +#define LOG_LEVEL_FATAL 1 +#define LOG_LEVEL_ERROR 2 +#define LOG_LEVEL_WARN 3 +#define LOG_LEVEL_INFO 4 +#define LOG_LEVEL_DEBUG 5 + +extern unsigned int logLevel; + +// Logging macros +#define FATAL_COL "\x1B[4;31m" +#define ERROR_COL "\x1B[91m" +#define WARN_COL "\x1B[33m" +#define INFO_COL "\x1B[34m" +#define DEBUG_COL "\x1B[90m" +#define NORMAL_COL "\x1B[0m" + +#define FATAL(...) if (logLevel >= LOG_LEVEL_FATAL) { printf("| %sFATAL%s | ", FATAL_COL, NORMAL_COL); printf(__VA_ARGS__); } +#define ERROR(...) if (logLevel >= LOG_LEVEL_ERROR) { printf("| %sERROR%s | ", ERROR_COL, NORMAL_COL); printf(__VA_ARGS__); } +#define WARN(...) if (logLevel >= LOG_LEVEL_WARN) { printf("| %sWARN%s | ", WARN_COL, NORMAL_COL); printf(__VA_ARGS__); } +#define INFO(...) if (logLevel >= LOG_LEVEL_INFO) { printf("| %sINFO%s | ", INFO_COL, NORMAL_COL); printf(__VA_ARGS__); } +#define DEBUG(...) if (logLevel >= LOG_LEVEL_DEBUG) { printf("| %sDEBUG%s | ", DEBUG_COL, NORMAL_COL); printf(__VA_ARGS__); } + +#endif // LOG_H \ No newline at end of file