Changeset 5359

Show
Ignore:
Timestamp:
03/12/08 10:09:52 (4 months ago)
Author:
morris
Message:

Refactor logging a bit

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • libwired/trunk/libwired/system/wi-log.c

    r5265 r5359  
    5757 
    5858 
    59 static void                                             _wi_log_vlog(int, wi_string_t *, va_list); 
     59static void                                             _wi_log_vlog(wi_log_level_t, wi_string_t *, va_list); 
    6060static void                                             _wi_log_date(char *); 
    6161static void                                             _wi_log_truncate(const char *); 
     
    7070wi_boolean_t                                    wi_log_file = false; 
    7171 
    72 wi_log_level_t                                  wi_log_level = WI_LOG_NORMAL
     72wi_log_level_t                                  wi_log_level = WI_LOG_INFO
    7373int                                                             wi_log_syslog_facility = LOG_DAEMON; 
    7474wi_uinteger_t                                   wi_log_limit = 0; 
     
    148148#pragma mark - 
    149149 
    150 static void _wi_log_vlog(int priority, wi_string_t *fmt, va_list ap) { 
     150static void _wi_log_vlog(wi_log_level_t level, wi_string_t *fmt, va_list ap) { 
    151151        wi_string_t             *string; 
    152152        FILE                    *fp = NULL; 
    153153        const char              *cstring, *name, *path; 
    154154        char                    date[_WI_LOG_DATE_SIZE]; 
    155          
    156         string = wi_string_init_with_format_and_arguments(wi_string_alloc(), fmt, ap); 
    157         cstring = wi_string_cstring(string); 
    158  
     155        int                             priority; 
     156         
    159157        if(wi_lock_trylock(_wi_log_lock)) { 
     158                string = wi_string_init_with_format_and_arguments(wi_string_alloc(), fmt, ap); 
     159                cstring = wi_string_cstring(string); 
    160160                name = wi_string_cstring(wi_process_name(wi_process())); 
    161161                 
     
    167167                        fprintf(fp, "%s %s[%u]: %s\n", date, name, (uint32_t) getpid(), cstring); 
    168168                } 
    169                 else if(wi_log_startup && priority < LOG_INFO) { 
     169                else if(wi_log_startup && level < WI_LOG_INFO) { 
    170170                        fp = stderr; 
    171171 
     
    173173                } 
    174174                else if(wi_log_tool) { 
    175                         fp = (priority < LOG_INFO) ? stderr : stdout; 
     175                        fp = (level < WI_LOG_INFO) ? stderr : stdout; 
    176176 
    177177                        fprintf(fp, "%s: %s\n", name, cstring); 
    178178                } 
    179179                else if(wi_log_plain) { 
    180                         fp = (priority < LOG_INFO) ? stderr : stdout; 
     180                        fp = (level < WI_LOG_INFO) ? stderr : stdout; 
    181181 
    182182                        fprintf(fp, "%s\n", cstring); 
     
    186186                        fflush(fp); 
    187187 
    188                 if(wi_log_syslog) 
     188                if(wi_log_syslog) { 
     189                        switch(level) { 
     190                                default: 
     191                                case WI_LOG_INFO:       priority = LOG_INFO;    break; 
     192                                case WI_LOG_WARN:       priority = LOG_WARNING; break; 
     193                                case WI_LOG_ERR:        priority = LOG_ERR;             break; 
     194                                case WI_LOG_DEBUG:      priority = LOG_DEBUG;   break; 
     195                        } 
     196                         
    189197                        syslog(priority, "%s", cstring); 
     198                } 
    190199 
    191200                if(wi_log_file && wi_log_path) { 
     
    213222 
    214223                if(wi_log_callback) 
    215                         (*wi_log_callback)(string); 
    216  
    217                 if(wi_log_startup && priority == LOG_ERR) 
     224                        (*wi_log_callback)(level, string); 
     225 
     226                if(wi_log_startup && level == WI_LOG_ERR) 
    218227                        exit(1); 
     228         
     229                wi_release(string); 
    219230 
    220231                wi_lock_unlock(_wi_log_lock); 
    221232        } 
    222          
    223         wi_release(string); 
    224233} 
    225234 
     
    309318        if(wi_log_level >= WI_LOG_DEBUG) { 
    310319                va_start(ap, fmt); 
    311                 _wi_log_vlog(LOG_DEBUG, fmt, ap); 
     320                _wi_log_vlog(WI_LOG_DEBUG, fmt, ap); 
    312321                va_end(ap); 
    313322        } 
     
    320329 
    321330        va_start(ap, fmt); 
    322         _wi_log_vlog(LOG_INFO, fmt, ap); 
     331        _wi_log_vlog(WI_LOG_INFO, fmt, ap); 
    323332        va_end(ap); 
    324333} 
     
    330339 
    331340        va_start(ap, fmt); 
    332         _wi_log_vlog(LOG_WARNING, fmt, ap); 
     341        _wi_log_vlog(WI_LOG_WARN, fmt, ap); 
    333342        va_end(ap); 
    334343} 
     
    340349 
    341350        va_start(ap, fmt); 
    342         _wi_log_vlog(LOG_ERR, fmt, ap); 
     351        _wi_log_vlog(WI_LOG_ERR, fmt, ap); 
    343352        va_end(ap); 
    344353} 
     
    349358        va_list     ap; 
    350359 
    351         if(wi_log_level >= WI_LOG_VERBOSE1) { 
    352                 va_start(ap, fmt); 
    353                 _wi_log_vlog(LOG_INFO, fmt, ap); 
    354                 va_end(ap); 
    355         } 
     360        va_start(ap, fmt); 
     361        _wi_log_vlog(WI_LOG_INFO, fmt, ap); 
     362        va_end(ap); 
    356363} 
    357364 
     
    361368        va_list     ap; 
    362369 
    363         if(wi_log_level >= WI_LOG_VERBOSE2) { 
    364                 va_start(ap, fmt); 
    365                 _wi_log_vlog(LOG_INFO, fmt, ap); 
    366                 va_end(ap); 
    367         } 
    368 
     370        va_start(ap, fmt); 
     371        _wi_log_vlog(WI_LOG_INFO, fmt, ap); 
     372        va_end(ap); 
     373
  • libwired/trunk/libwired/system/wi-log.h

    r5193 r5359  
    3737 
    3838enum _wi_log_level { 
    39         WI_LOG_NORMAL                                   = 0, 
    40         WI_LOG_VERBOSE1, 
    41         WI_LOG_VERBOSE2, 
    42         WI_LOG_DEBUG, 
    43         WI_LOG_MAX 
     39        WI_LOG_ERR                                              = 0, 
     40        WI_LOG_WARN, 
     41        WI_LOG_INFO, 
     42        WI_LOG_DEBUG 
    4443}; 
    4544typedef enum _wi_log_level                      wi_log_level_t; 
    4645 
    4746 
    48 typedef void                                            wi_log_callback_func_t(wi_string_t *); 
     47typedef void                                            wi_log_callback_func_t(wi_log_level_t, wi_string_t *); 
    4948 
    5049