#ifndef BOKF_LOG_H #define BOKF_LOG_H enum { LOG_ERROR = 0, LOG_WARN = 1, LOG_INFO = 2, LOG_DEBUG = 3 }; void log_set_level(int level); int log_level_from_name(const char *name); void log_msg(int level, const char *fmt, ...) __attribute__((format(printf, 2, 3))); #define log_error(...) log_msg(LOG_ERROR, __VA_ARGS__) #define log_warn(...) log_msg(LOG_WARN, __VA_ARGS__) #define log_info(...) log_msg(LOG_INFO, __VA_ARGS__) #define log_debug(...) log_msg(LOG_DEBUG, __VA_ARGS__) #endif