Changes in / [911:c9f86e8c45fe:943:e6bf3214d1ef] in freeDiameter
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
.hgtags
r883 r942 30 30 226f5957186ae4369467b070aeb61b1c631c9a5c 1.1.5-rc2 31 31 ae96ae28f3ddc48b9e2676e9538008eab2b9d60a 1.1.5 32 8500947421cb412b5f4f2dfffdf1a35b6fb369e0 FORK -
include/freeDiameter/libfdproto.h
r907 r941 110 110 111 111 /* 112 * FUNCTION: fd_log _debug_fstr112 * FUNCTION: fd_log 113 113 * MACRO: fd_log_debug 114 114 * 115 115 * PARAMETERS: 116 * fstr : Stream where the text will be sent (default: stdout)116 * loglevel : Integer, how important the message is 117 117 * format : Same format string as in the printf function 118 118 * ... : Same list as printf 119 119 * 120 120 * DESCRIPTION: 121 * Log internal information for use of developpers only.121 * Write information to log. 122 122 * The format and arguments may contain UTF-8 encoded data. The 123 * output medium (file or console)is expected to support this encoding.123 * output medium is expected to support this encoding. 124 124 * 125 125 * RETURN VALUE: 126 126 * None. 127 127 */ 128 void fd_log_debug_fstr ( FILE * fstr, const char * format, ... ); 129 #define fd_log_debug(format,args...) fd_log_debug_fstr(NULL, format, ## args) 128 void fd_log ( int, const char *, ... ); 129 #define fd_log_debug(format,args...) fd_log(FD_LOG_DEBUG, format, ## args) 130 void fd_log_debug_fstr( FILE *, const char *, ... ); 130 131 131 132 /* these are internal objects of the debug facility, … … 174 175 * 175 176 * PARAMETERS: 176 * fstr : Stream where the text will be sent to (default: stdout)177 * loglevel : priority of the message 177 178 * format : Same format string as in the printf function 178 179 * va_list : Argument list … … 184 185 * int : Success or failure 185 186 */ 186 int fd_log_handler_register ( void (*logger)( const char * format, va_list *args) );187 int fd_log_handler_register ( void (*logger)(int loglevel, const char * format, va_list args) ); 187 188 188 189 /* … … 209 210 #endif /* ASSERT */ 210 211 211 /* levels definitions */ 212 /* log levels definitions */ 213 #define FD_LOG_DEBUG 0 214 #define FD_LOG_ERROR 5 215 216 /* print level definitions */ 212 217 #define NONE 0 /* Display no debug message */ 213 218 #define INFO 1 /* Display errors only */ … … 264 269 char __buf[25]; \ 265 270 const char * __thn = ((char *)pthread_getspecific(fd_log_thname) ?: "unnamed"); \ 266 fd_log _debug("\t | tid:%-20s\t%s\tin %s@%s:%d\n"\267 "\t%s|%*s" format "\n", \271 fd_log(level, "\t | tid:%-20s\t%s\tin %s@%s:%d\n" \ 272 "\t%s|%*s" format, \ 268 273 __thn, fd_log_time(NULL, __buf, sizeof(__buf)), __PRETTY_FUNCTION__, __FILE__, __LINE__,\ 269 274 (level < FULL)?"@":" ",level, "", ## args); \ … … 277 282 char __buf[25]; \ 278 283 const char * __thn = ((char *)pthread_getspecific(fd_log_thname) ?: "unnamed"); \ 279 fd_log _debug("\t | tid:%-20s\t%s\tin %s@%s:%d\n"\280 "\t%s|%*s" format "\n", \284 fd_log(level, "\t | tid:%-20s\t%s\tin %s@%s:%d\n" \ 285 "\t%s|%*s" format, \ 281 286 __thn, fd_log_time(NULL, __buf, sizeof(__buf)), __PRETTY_FUNCTION__, __FILE__, __LINE__,\ 282 287 (level < FULL)?"@":" ",level, "", ## args); \ 283 288 } else { \ 284 fd_log _debug(format "\n", ## args);\289 fd_log(level, format, ## args); \ 285 290 } \ 286 291 } \ … … 321 326 uint8_t * __buf = (uint8_t *)(buf); \ 322 327 char * __thn = ((char *)pthread_getspecific(fd_log_thname) ?: "unnamed"); \ 323 fd_log _debug("\t | tid:%-20s\t%s\tin %s@%s:%d\n"\328 fd_log(level, "\t | tid:%-20s\t%s\tin %s@%s:%d\n" \ 324 329 "\t%s|%*s" prefix , \ 325 330 __thn, fd_log_time(NULL, __ts, sizeof(__ts)), __PRETTY_FUNCTION__, __FILE__, __LINE__, \ 326 331 (level < FULL)?"@":" ",level, ""); \ 327 332 for (__i = 0; __i < __sz; __i++) { \ 328 fd_log _debug("%02.2hhx", __buf[__i]);\333 fd_log(level, "%02.2hhx", __buf[__i]); \ 329 334 } \ 330 fd_log _debug(suffix "\n");\335 fd_log(level, suffix); \ 331 336 } \ 332 337 } … … 357 362 flag); \ 358 363 if (__rc) \ 359 364 fd_log_debug("%s", (char *)gai_strerror(__rc)); \ 360 365 else \ 361 366 fd_log_debug("%s", &__addrbuf[0]); \ 362 367 } else { \ 363 fd_log_debug("(NULL / ANY)"); 368 fd_log_debug("(NULL / ANY)"); \ 364 369 } \ 365 370 } … … 378 383 flag); \ 379 384 if (__rc) \ 380 385 fd_log_debug("%s", (char *)gai_strerror(__rc)); \ 381 386 else \ 382 387 fd_log_debug("[%s]:%s", &__addrbuf[0],&__servbuf[0]); \ 383 388 } else { \ 384 389 fd_log_debug("(NULL / ANY)"); \ … … 391 396 char __buf[25]; \ 392 397 char * __thn = ((char *)pthread_getspecific(fd_log_thname) ?: "unnamed"); \ 393 fd_log _debug("\t | tid:%-20s\t%s\tin %s@%s:%d\n"\398 fd_log(level, "\t | tid:%-20s\t%s\tin %s@%s:%d\n" \ 394 399 "\t%s|%*s" prefix , \ 395 400 __thn, fd_log_time(NULL, __buf, sizeof(__buf)), __PRETTY_FUNCTION__, __FILE__, __LINE__,\ 396 401 (level < FULL)?"@":" ",level, ""); \ 397 402 sSA_DUMP_NODE_SERV( sa, flags ); \ 398 fd_log _debug(suffix "\n");\403 fd_log(level, suffix); \ 399 404 } \ 400 405 } … … 418 423 #define TRACE_DEBUG_sSA(level, prefix, sa, flags, suffix ) 419 424 #define TRACE_DEBUG_ERROR(format,args... ) { \ 420 fd_log _debug(format "\n", ## args); \425 fd_log(FD_LOG_ERROR, format, ## args); \ 421 426 } 422 427 #endif /* STRIP_DEBUG_CODE */ -
libfdproto/log.c
r909 r941 44 44 int fd_g_debug_lvl = INFO; 45 45 46 static void fd_internal_logger( int, const char *, va_list ); 47 46 48 /* These may be used to pass specific debug requests via the command-line parameters */ 47 49 char * fd_debug_one_function = NULL; … … 53 55 54 56 /* Allow passing of the log and debug information from base stack to extensions */ 55 void (*fd_ external_logger)( const char * format, va_list *args ) = NULL;57 void (*fd_logger)( int loglevel, const char * format, va_list args ) = fd_internal_logger; 56 58 57 /* Register an dexternal call back for tracing and debug */58 int fd_log_handler_register( void (*logger)( const char * format, va_list *args))59 /* Register an external call back for tracing and debug */ 60 int fd_log_handler_register( void (*logger)(int loglevel, const char * format, va_list args) ) 59 61 { 60 62 CHECK_PARAMS( logger ); 61 63 62 if ( fd_ external_logger != NULL)64 if ( fd_logger != fd_internal_logger ) 63 65 { 64 66 return EALREADY; /* only one registration allowed */ … … 66 68 else 67 69 { 68 fd_ external_logger = logger;70 fd_logger = logger; 69 71 } 72 70 73 return 0; 71 74 } … … 74 77 int fd_log_handler_unregister ( void ) 75 78 { 76 fd_ external_logger = NULL;79 fd_logger = fd_internal_logger; 77 80 return 0; /* Successfull in all cases. */ 78 81 } … … 83 86 } 84 87 88 89 static void fd_internal_logger( int loglevel, const char *format, va_list ap ) 90 { 91 FILE *fstr = fd_g_debug_fstr ?: stdout; 92 93 /* logging has been decided by macros outside already */ 94 vfprintf( fd_g_debug_fstr, format, ap); 95 fprintf(fd_g_debug_fstr, "\n"); 96 fflush(fd_g_debug_fstr); 97 } 98 85 99 /* Log a debug message */ 86 void fd_log _debug_fstr ( FILE * fstr, const char * format, ... )100 void fd_log ( int loglevel, const char * format, ... ) 87 101 { 88 102 va_list ap; … … 93 107 94 108 va_start(ap, format); 95 if ( fd_external_logger != NULL ) 96 { 97 fd_external_logger( format, &ap ); 98 } 99 else 100 { 101 vfprintf( fstr ?: stdout, format, ap); 102 fflush(fstr ?: stdout); 103 } 109 fd_logger(loglevel, format, ap); 104 110 va_end(ap); 105 111 … … 107 113 108 114 (void)pthread_mutex_unlock(&fd_log_lock); 115 } 116 117 /* Log debug message to file. */ 118 void fd_log_debug_fstr( FILE * fstr, const char * format, ... ) 119 { 120 va_list ap; 121 122 va_start(ap, format); 123 vfprintf(fstr, format, ap); 124 va_end(ap); 109 125 } 110 126
Note: See TracChangeset
for help on using the changeset viewer.