#define log_error(...) log_print (LOG_LEVEL_ERROR, __VA_ARGS__) /* print a log message with level error */
#define log_warn(...) log_print (LOG_LEVEL_WARN, __VA_ARGS__) /* print a log message with level warning */
#define log_info(...) log_print (LOG_LEVEL_INFO, __VA_ARGS__) /* print a log message with level info */
#define log_ok(...) log_print (LOG_LEVEL_OK, __VA_ARGS__) /* print a log message with level ok */
#define log_debug(...) log_print (LOG_LEVEL_DEBUG, __VA_ARGS__) /* print a log message with level debug */
#define log_error_fl(...) log_print_fl (LOG_LEVEL_ERROR, __FILE__, __LINE__, __VA_ARGS__) /* print a log message with the current file and line and log level error */
#define log_warn_fl(...) log_print_fl (LOG_LEVEL_WARN, __FILE__, __LINE__, __VA_ARGS__) /* print a log message with the current file and line and log level warning */
#define log_info_fl(...) log_print_fl (LOG_LEVEL_INFO, __FILE__, __LINE__, __VA_ARGS__) /* print a log message with the current file and line and log level info */
#define log_ok_fl(...) log_print_fl (LOG_LEVEL_OK, __FILE__, __LINE__, __VA_ARGS__) /* print a log message with the current file and line and log level ok */
#define log_debug_fl(...) log_print_fl (LOG_LEVEL_DEBUG, __FILE__, __LINE__, __VA_ARGS__) /* print a log message with the current file and line and log level debug */
__attribute__((format(printf,2,3)))voidlog_print(log_level_ttype,constchar*fmt,...);/* print a log message with given log level and format */
__attribute__((format(printf,4,5)))voidlog_print_fl(log_level_ttype,constchar*file,size_tline,constchar*fmt,...);/* print a log message with given log level and format, and add the filename and line that it was called in */