Files

40 lines
1.1 KiB
C

#pragma once
#include <stdio.h>
#ifdef LOG_IMPL
int LOG_LEVEL;
#else
extern char LOG_LEVEL;
#endif
static inline void set_log_level(char level) {
LOG_LEVEL = level;
}
// log level bitmasks
#define LL_ERR 0b10000000
#define LL_WARN 0b01000000
#define LL_INFO 0b00100000
#define LL_OK 0b00010000
#define LL_ALL 0b11110000
#define LL_NONE 0
#define C_NORMAL "\033[0m"
#define C_RED "\033[31m"
#define C_YELLOW "\033[33m"
#define C_BLUE "\033[34m"
#define C_GREEN "\033[32m"
#define LOG_ERR C_RED "[!]" C_NORMAL
#define LOG_WARN C_YELLOW "[-]" C_NORMAL
#define LOG_INFO C_BLUE "[*]" C_NORMAL
#define LOG_OK C_GREEN "[+]" C_NORMAL
// macros
#define log_err_m(msg, ...) (LOG_LEVEL&LL_ERR) ? fprintf(stderr, LOG_ERR " " msg "\n" , ##__VA_ARGS__):0
#define log_warn_m(msg, ...) (LOG_LEVEL&LL_WARN) ? printf(LOG_WARN " " msg "\n" , ##__VA_ARGS__):0
#define log_ok_m(msg, ...) (LOG_LEVEL&LL_OK) ? printf(LOG_OK " " msg "\n" , ##__VA_ARGS__):0
#define log_info_m(msg, ...) (LOG_LEVEL&LL_INFO) ? printf(LOG_INFO " " msg "\n" , ##__VA_ARGS__):0