Main Page | Modules | Data Structures | Directories | File List | Data Fields

log.h

00001 /* 
00002  * Copyright (c) 2005-2007 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 
00054 /* messages longer then U_MAX_LOG_LENGTH will be silently discarded */
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 /* !_U_LOG_H_ */

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