Changeset 941:64088de91f7f in freeDiameter for libfdproto
- Timestamp:
- Jan 20, 2013, 1:42:12 AM (11 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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.