26#ifndef USB_MODED_LOG_H_
27# define USB_MODED_LOG_H_
39# define LOG_ENABLE_DEBUG 01
40# define LOG_ENABLE_TIMESTAMPS 01
41# define LOG_ENABLE_LEVELTAGS 01
42# define LOG_ENABLE_CONTEXT 0
52 LOG_MIN_LEVEL = LOG_CRIT,
53 LOG_MAX_LEVEL = LOG_DEBUG,
60# if LOG_ENABLE_CONTEXT
61const char *context_enter(
const char *func);
62void context_leave(
void *aptr);
64# define LOG_REGISTER_CONTEXT\
65 __attribute__((cleanup(context_leave))) const char *qqq =\
66 context_enter(__func__)
68# define LOG_REGISTER_CONTEXT\
80void log_emit_va (
const char *file,
const char *func,
int line,
int lev,
const char *fmt, va_list va);
81void log_emit_real (
const char *file,
const char *func,
int line,
int lev,
const char *fmt, ...) __attribute__((format(printf, 5, 6)));
82void log_debugf (const
char *fmt, ...);
87void log_set_type (
int type);
98# define log_emit(LEV, FMT, ARGS...) do {\
100 log_emit_real(__FILE__,__FUNCTION__,__LINE__, LEV, FMT, ##ARGS);\
104# define log_crit( FMT, ARGS...) log_emit(LOG_CRIT, FMT, ##ARGS)
105# define log_err( FMT, ARGS...) log_emit(LOG_ERR, FMT, ##ARGS)
106# define log_warning( FMT, ARGS...) log_emit(LOG_WARNING, FMT, ##ARGS)
109# define log_notice( FMT, ARGS...) log_emit(LOG_NOTICE, FMT, ##ARGS)
110# define log_info( FMT, ARGS...) log_emit(LOG_INFO, FMT, ##ARGS)
111# define log_debug( FMT, ARGS...) log_emit(LOG_DEBUG, FMT, ##ARGS)
113# define log_notice( FMT, ARGS...) do{}while(0)
114# define log_info( FMT, ARGS...) do{}while(0)
115# define log_debug( FMT, ARGS...) do{}while(0)
117# define log_debugf( FMT, ARGS...) do{}while(0)
bool log_get_lineinfo(void)
void log_emit_real(const char *file, const char *func, int line, int lev, const char *fmt,...)
void log_set_level(int lev)
void log_set_name(const char *name)
void log_set_lineinfo(bool lineinfo)
const char * log_get_name(void)
void log_emit_va(const char *file, const char *func, int line, int lev, const char *fmt, va_list va)