41 lines
779 B
C
41 lines
779 B
C
|
#ifndef _LOGGING_HEADER
|
||
|
#define _LOGGING_HEADER 1
|
||
|
|
||
|
#include <stdarg.h>
|
||
|
|
||
|
// log levels:
|
||
|
// 0: no logging
|
||
|
// 1: errors
|
||
|
// 2: warnings
|
||
|
// 3: info
|
||
|
// 4: trace
|
||
|
|
||
|
|
||
|
#define log_error(...) log_message(1, __VA_ARGS__)
|
||
|
#define log_warning(...) log_message(2, __VA_ARGS__)
|
||
|
#define log_info(...) log_message(3, __VA_ARGS__)
|
||
|
#ifdef LOG_ENABLE_TRACE
|
||
|
#define log_trace(...) log_message(4, __VA_ARGS__)
|
||
|
#endif
|
||
|
#ifndef LOG_ENABLE_TRACE
|
||
|
#define log_trace(...) do {} while(0)
|
||
|
#endif
|
||
|
|
||
|
|
||
|
int log_level = 1;
|
||
|
|
||
|
|
||
|
void log_message(int level, const char * format, ...) {
|
||
|
va_list args;
|
||
|
va_start(args, format);
|
||
|
|
||
|
if(level <= log_level) {
|
||
|
// TODO: format log messages with timestamp, log level and newline at the end
|
||
|
vfprintf(stderr, format, args);
|
||
|
}
|
||
|
va_end(args);
|
||
|
}
|
||
|
|
||
|
|
||
|
#endif
|