Changeset 961:d95cd3ca9e8d in freeDiameter for libfdproto/log.c
- Timestamp:
- Mar 7, 2013, 4:09:54 AM (11 years ago)
- Branch:
- default
- Parents:
- 960:f39fa6cd86e0 (diff), 933:04f590da5821 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent. - Phase:
- public
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
libfdproto/log.c
r928 r961 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 char buf[25]; 92 FILE *fstr = fd_g_debug_fstr ?: stdout; 93 94 /* logging has been decided by macros outside already */ 95 96 /* add timestamp */ 97 fprintf(fd_g_debug_fstr, "%s\t", fd_log_time(NULL, buf, sizeof(buf))); 98 vfprintf(fd_g_debug_fstr, format, ap); 99 if (format && (format[strlen(format)-1] != '\n')) { 100 fprintf(fd_g_debug_fstr, "\n"); 101 } 102 fflush(fd_g_debug_fstr); 103 } 104 85 105 /* Log a debug message */ 86 void fd_log _debug_fstr ( FILE * fstr, const char * format, ... )106 void fd_log ( int loglevel, const char * format, ... ) 87 107 { 88 108 va_list ap; … … 93 113 94 114 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 } 115 fd_logger(loglevel, format, ap); 104 116 va_end(ap); 105 117 … … 107 119 108 120 (void)pthread_mutex_unlock(&fd_log_lock); 121 } 122 123 /* Log debug message to file. */ 124 void fd_log_debug_fstr( FILE * fstr, const char * format, ... ) 125 { 126 va_list ap; 127 128 va_start(ap, format); 129 vfprintf(fstr, format, ap); 130 va_end(ap); 109 131 } 110 132 -
libfdproto/log.c
r945 r961 3 3 * Author: Sebastien Decugis <sdecugis@freediameter.net> * 4 4 * * 5 * Copyright (c) 201 2, WIDE Project and NICT *5 * Copyright (c) 2013, WIDE Project and NICT * 6 6 * All rights reserved. * 7 7 * *
Note: See TracChangeset
for help on using the changeset viewer.