29#define LOG_LEVEL_NONE 0
30#define LOG_LEVEL_ERROR 1
31#define LOG_LEVEL_WARNING 2
32#define LOG_LEVEL_INFO 3
33#define LOG_LEVEL_DEBUG 4
36# define LOG_VERBOSITY LOG_LEVEL_ERROR
40#ifdef LOG_USE_DEBUGOUT
44# define _LOG(tag, fmt, ...) \
47 snprintf(_log_buf, sizeof(_log_buf), \
48 "[" tag "] %s:%d: " fmt "\n", \
49 __FILE__, __LINE__, ##__VA_ARGS__); \
50 OutputDebugStringA(_log_buf); \
53# define _LOG(tag, fmt, ...) \
54 fprintf(stderr, "[" tag "] %s:%d: " fmt "\n", \
55 __FILE__, __LINE__, ##__VA_ARGS__)
59#if LOG_VERBOSITY >= LOG_LEVEL_ERROR
60# define LOG_ERROR(fmt, ...) _LOG("ERROR", fmt, ##__VA_ARGS__)
62# define LOG_ERROR(fmt, ...) do {} while(0)
65#if LOG_VERBOSITY >= LOG_LEVEL_WARNING
66# define LOG_WARNING(fmt, ...) _LOG("WARNING", fmt, ##__VA_ARGS__)
68# define LOG_WARNING(fmt, ...) do {} while(0)
71#if LOG_VERBOSITY >= LOG_LEVEL_INFO
72# define LOG_INFO(fmt, ...) _LOG("INFO", fmt, ##__VA_ARGS__)
74# define LOG_INFO(fmt, ...) do {} while(0)
77#if LOG_VERBOSITY >= LOG_LEVEL_DEBUG
78# define LOG_DEBUG(fmt, ...) _LOG("DEBUG", fmt, ##__VA_ARGS__)
80# define LOG_DEBUG(fmt, ...) do {} while(0)