log.h

00001 /* 
00002  * Copyright (c) 2005-2012 by KoanLogic s.r.l. - All rights reserved.  
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 
00060 /* messages longer then U_MAX_LOG_LENGTH will be silently discarded */
00061 enum { U_MAX_LOG_LENGTH  = 1024 };
00062 
00071 extern int facility;
00072 
00074 typedef int (*u_log_hook_t)(void *arg, int level, const char *str); 
00075 
00077 typedef int (*u_log_lock_t)(void *arg);
00078 
00080 typedef int (*u_log_unlock_t)(void *arg);
00081 
00098 int u_log_set_lock(u_log_lock_t f, void *arg);
00099 
00112 int u_log_set_unlock(u_log_unlock_t f, void *arg);
00113 
00131 int u_log_set_hook(u_log_hook_t hook, void *arg, u_log_hook_t *old, void**parg);
00132 
00143 #define u_log_die(ecode, facility, flags, err, ...)               \
00144     do {                                                        \
00145         u_log_write(facility, LOG_CRIT, flags, err, __VA_ARGS__); \
00146         exit(ecode);                                            \
00147     } while(0)
00148 
00158 #define u_log_emerg(facility, flags, err, ...) \
00159     u_log_write(facility, LOG_EMERG, flags, err, __VA_ARGS__)
00160 
00170 #define u_log_alert(facility, flags, err, ...) \
00171     u_log_write(facility, LOG_ALERT, flags, err, __VA_ARGS__)
00172 
00182 #define u_log_critical(facility, flags, err, ...) \
00183     u_log_write(facility, LOG_CRIT, flags, err, __VA_ARGS__)
00184 
00194 #define u_log_error(facility, flags, err, ...) \
00195     u_log_write(facility, LOG_ERR, flags, err, __VA_ARGS__)
00196 
00206 #define u_log_warning(facility, flags, err, ...) \
00207     u_log_write(facility, LOG_WARNING, flags, err, __VA_ARGS__)
00208 
00218 #define u_log_notice(facility, flags, err, ...) \
00219     u_log_write(facility, LOG_NOTICE, flags, err, __VA_ARGS__)
00220 
00230 #define u_log_info(facility, flags, err, ...) \
00231     u_log_write(facility, LOG_INFO, flags, err, __VA_ARGS__)
00232 
00242 #define u_log_debug(facility, flags, err, ...) \
00243     u_log_write(facility, LOG_DEBUG, flags, err, __VA_ARGS__)
00244 
00246 #define die(ecode, ...) u_log_die(ecode, facility, 1, 0, __VA_ARGS__)
00247 
00249 #define die_if(expr) if(expr) die(EXIT_FAILURE, #expr)
00250 
00252 #define emerg_( err, ...) u_log_emerg(facility, 1, err, __VA_ARGS__)
00253 
00255 #define alert_( err, ...) u_log_alert(facility, 1, err, __VA_ARGS__)
00256 
00258 #define crit_( err, ...) u_log_critical(facility, 1, err, __VA_ARGS__)
00259 
00261 #define err_( err, ...) u_log_error(facility, 1, err, __VA_ARGS__)
00262 
00264 #define warn_( err, ...) u_log_warning(facility, 1, err, __VA_ARGS__)
00265 
00267 #define notice_( err, ...) u_log_notice(facility, 1, err, __VA_ARGS__)
00268 
00270 #define info_( err, ...) u_log_info(facility, 0, err, __VA_ARGS__)
00271 
00273 #define dbg_( err, ...) u_log_debug(facility, 1, err, __VA_ARGS__)
00274 
00276 #define con_( err, ...) u_console_write( err, __VA_ARGS__)
00277 
00293 int u_strerror_r(int err, char *buf, size_t size);
00294 
00299 #ifdef __cplusplus
00300 }
00301 #endif
00302 
00303 #endif /* !_U_LOG_H_ */

←Products
© 2005-2012 - KoanLogic S.r.l. - All rights reserved