00001
00002
00003
00004
00005 #ifndef _U_LOG_H_
00006 #define _U_LOG_H_
00007
00008 #include <u/libu_conf.h>
00009
00010 #include <stdlib.h>
00011 #include <stdarg.h>
00012 #include <stdio.h>
00013
00014 #include <u/missing.h>
00015 #include <u/toolbox/logprv.h>
00016
00017 #ifdef __cplusplus
00018 extern "C" {
00019 #endif
00020
00054
00055 enum { U_MAX_LOG_LENGTH = 1024 };
00056
00065 extern int facility;
00066
00068 typedef int (*u_log_hook_t)(void *arg, int level, const char *str);
00069
00087 int u_log_set_hook(u_log_hook_t hook, void *arg, u_log_hook_t *old, void**parg);
00088
00099 #define u_log_die(ecode, facility, flags, err, ...) \
00100 do { \
00101 u_log_write(facility, LOG_CRIT, flags, err, __VA_ARGS__); \
00102 exit(ecode); \
00103 } while(0)
00104
00114 #define u_log_emerg(facility, flags, err, ...) \
00115 u_log_write(facility, LOG_EMERG, flags, err, __VA_ARGS__)
00116
00126 #define u_log_alert(facility, flags, err, ...) \
00127 u_log_write(facility, LOG_ALERT, flags, err, __VA_ARGS__)
00128
00138 #define u_log_critical(facility, flags, err, ...) \
00139 u_log_write(facility, LOG_CRIT, flags, err, __VA_ARGS__)
00140
00150 #define u_log_error(facility, flags, err, ...) \
00151 u_log_write(facility, LOG_ERR, flags, err, __VA_ARGS__)
00152
00162 #define u_log_warning(facility, flags, err, ...) \
00163 u_log_write(facility, LOG_WARNING, flags, err, __VA_ARGS__)
00164
00174 #define u_log_notice(facility, flags, err, ...) \
00175 u_log_write(facility, LOG_NOTICE, flags, err, __VA_ARGS__)
00176
00186 #define u_log_info(facility, flags, err, ...) \
00187 u_log_write(facility, LOG_INFO, flags, err, __VA_ARGS__)
00188
00198 #define u_log_debug(facility, flags, err, ...) \
00199 u_log_write(facility, LOG_DEBUG, flags, err, __VA_ARGS__)
00200
00202 #define die(ecode, ...) u_log_die(ecode, facility, 1, 0, __VA_ARGS__)
00203
00205 #define die_if(expr) if(expr) die(EXIT_FAILURE, #expr)
00206
00208 #define emerg_( err, ...) u_log_emerg(facility, 1, err, __VA_ARGS__)
00209
00211 #define alert_( err, ...) u_log_alert(facility, 1, err, __VA_ARGS__)
00212
00214 #define crit_( err, ...) u_log_critical(facility, 1, err, __VA_ARGS__)
00215
00217 #define err_( err, ...) u_log_error(facility, 1, err, __VA_ARGS__)
00218
00220 #define warn_( err, ...) u_log_warning(facility, 1, err, __VA_ARGS__)
00221
00223 #define notice_( err, ...) u_log_notice(facility, 1, err, __VA_ARGS__)
00224
00226 #define info_( err, ...) u_log_info(facility, 0, err, __VA_ARGS__)
00227
00229 #define dbg_( err, ...) u_log_debug(facility, 1, err, __VA_ARGS__)
00230
00232 #define con_( err, ...) u_console_write( err, __VA_ARGS__)
00233
00249 int u_strerror_r(int err, char *buf, size_t size);
00250
00255 #ifdef __cplusplus
00256 }
00257 #endif
00258
00259 #endif