usb_moded  0.86.0+mer57
usb_moded-log.h
Go to the documentation of this file.
1 
26 #ifndef USB_MODED_LOG_H_
27 # define USB_MODED_LOG_H_
28 
29 # include <stdbool.h>
30 # include <stdarg.h>
31 # include <syslog.h>
32 
33 /* Logging functionality */
34 
35 /* ========================================================================= *
36  * Constants
37  * ========================================================================= */
38 
39 # define LOG_ENABLE_DEBUG 01
40 # define LOG_ENABLE_TIMESTAMPS 01
41 # define LOG_ENABLE_LEVELTAGS 01
42 # define LOG_ENABLE_CONTEXT 0
43 
44 enum
45 {
46  LOG_TO_STDERR, // log to stderr
47  LOG_TO_SYSLOG, // log to syslog
48 };
49 
50 enum
51 {
52  LOG_MIN_LEVEL = LOG_CRIT,
53  LOG_MAX_LEVEL = LOG_DEBUG,
54 };
55 
56 /* ========================================================================= *
57  * CONTEXT STACK
58  * ========================================================================= */
59 
60 # if LOG_ENABLE_CONTEXT
61 const char *context_enter(const char *func);
62 void context_leave(void *aptr);
63 
64 # define LOG_REGISTER_CONTEXT\
65  __attribute__((cleanup(context_leave))) const char *qqq =\
66  context_enter(__func__)
67 #else
68 # define LOG_REGISTER_CONTEXT\
69  do{}while(0)
70 #endif
71 
72 /* ========================================================================= *
73  * Prototypes
74  * ========================================================================= */
75 
76 /* ------------------------------------------------------------------------- *
77  * LOG
78  * ------------------------------------------------------------------------- */
79 
80 void log_emit_va (const char *file, const char *func, int line, int lev, const char *fmt, va_list va);
81 void log_emit_real (const char *file, const char *func, int line, int lev, const char *fmt, ...) __attribute__((format(printf, 5, 6)));
82 void log_debugf (const char *fmt, ...);
83 int log_get_level (void);
84 void log_set_level (int lev);
85 bool log_p (int lev);
86 int log_get_type (void);
87 void log_set_type (int type);
88 const char *log_get_name (void);
89 void log_set_name (const char *name);
90 void log_set_lineinfo(bool lineinfo);
91 bool log_get_lineinfo(void);
92 void log_init (void);
93 
94 /* ========================================================================= *
95  * Macros
96  * ========================================================================= */
97 
98 # define log_emit(LEV, FMT, ARGS...) do {\
99  if( log_p(LEV) ) {\
100  log_emit_real(__FILE__,__FUNCTION__,__LINE__, LEV, FMT, ##ARGS);\
101  }\
102 } while(0)
103 
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)
107 
108 # if LOG_ENABLE_DEBUG
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)
112 # else
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)
116 
117 # define log_debugf( FMT, ARGS...) do{}while(0)
118 # endif
119 
120 #endif /* USB_MODED_LOG_H_ */
log_set_lineinfo
void log_set_lineinfo(bool lineinfo)
Definition: usb_moded-log.c:392
log_get_lineinfo
bool log_get_lineinfo(void)
Definition: usb_moded-log.c:401
log_set_name
void log_set_name(const char *name)
Definition: usb_moded-log.c:383
log_init
void log_init(void)
Definition: usb_moded-log.c:407
log_get_name
const char * log_get_name(void)
Definition: usb_moded-log.c:374
log_get_type
int log_get_type(void)
Definition: usb_moded-log.c:356
log_p
bool log_p(int lev)
Definition: usb_moded-log.c:347
log_set_level
void log_set_level(int lev)
Definition: usb_moded-log.c:336
log_emit_va
void log_emit_va(const char *file, const char *func, int line, int lev, const char *fmt, va_list va)
Definition: usb_moded-log.c:210
log_get_level
int log_get_level(void)
Definition: usb_moded-log.c:327
log_emit_real
void log_emit_real(const char *file, const char *func, int line, int lev, const char *fmt,...)
Definition: usb_moded-log.c:303