Changeset 624

Show
Ignore:
Timestamp:
01/19/07 00:05:32 (2 years ago)
Author:
alo
Message:

--

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • cherokee/trunk/ChangeLog

    r622 r624  
     12007-01-18  A.D.F  <adefacc@tin.it> 
     2 
     3        * cherokee/buffer.h: 
     4        - cherokee_buffer_add(), 
     5          added const qualifier to 2nd parameter; 
     6 
     7        * cherokee/buffer.c: 
     8        - cherokee_buffer_add(), 
     9          added const qualifier to 2nd parameter; 
     10 
     11        * cherokee/logger_writer.c: 
     12        - now log buffer has a bigger size (1 page or 4096 bytes) 
     13          so that now max_bufsize can be used as a threshold 
     14          to flush buffer contents. 
     15 
     16        * cherokee/logger_ncsa.h:        
     17        - added new fields to cherokee_logger_ncsa_t: 
     18          - tz; 
     19          - now_time; 
     20          - now_dtm. 
     21 
     22        * cherokee/logger_ncsa.c: 
     23        - build_log_string(): 
     24          - speed-uo of around +12% - 14% by: 
     25            - creating datetime string only when now_time changes; 
     26            - using faster cherokee_buffer_add*() calls 
     27              instead of cherokee_buffer_add_va(); 
     28          - fixed log format (a space was missing, etc.). 
     29         
    1302007-01-18  Alvaro Lopez Ortega  <alvaro@alobbs.com> 
    231 
  • cherokee/trunk/cherokee/buffer.c

    r606 r624  
    179179 
    180180ret_t 
    181 cherokee_buffer_add (cherokee_buffer_t *buf, char *txt, size_t size) 
     181cherokee_buffer_add (cherokee_buffer_t *buf, const char *txt, size_t size) 
    182182{           
    183183        int free = buf->size - buf->len; 
  • cherokee/trunk/cherokee/buffer.h

    r606 r624  
    6363void  cherokee_buffer_swap_buffers       (cherokee_buffer_t  *buf, cherokee_buffer_t *second);        
    6464 
    65 ret_t cherokee_buffer_add                (cherokee_buffer_t  *buf, char *txt, size_t size); 
     65ret_t cherokee_buffer_add                (cherokee_buffer_t  *buf, const char *txt, size_t size); 
    6666ret_t cherokee_buffer_add_long10         (cherokee_buffer_t  *buf, clong_t lNum); 
    6767ret_t cherokee_buffer_add_llong10        (cherokee_buffer_t  *buf, cllong_t lNum); 
  • cherokee/trunk/cherokee/logger_ncsa.c

    r618 r624  
    103103{ 
    104104        ret_t                   ret; 
     105        long                   *this_timezone = NULL; 
    105106        cherokee_config_node_t *subconf; 
    106107 
     108        /* Init the local vars 
     109         */ 
     110 
     111        /* Get the timezone reference and compute tz offset 
     112         */ 
     113        this_timezone = cherokee_get_timezone_ref(); 
     114        logger->tz = - (*this_timezone / 60); 
     115        logger->now_time = (time_t) -1; 
     116 
    107117        /* Init the local buffers 
    108118         */ 
     119        cherokee_buffer_init (&logger->now_dtm); 
    109120        cherokee_buffer_init (&logger->referer); 
    110121        cherokee_buffer_init (&logger->useragent); 
     122        cherokee_buffer_ensure_size (&logger->now_dtm,   64); 
    111123        cherokee_buffer_ensure_size (&logger->referer, 1024); 
    112124        cherokee_buffer_ensure_size (&logger->useragent, 512); 
     
    158170        ret_t ret; 
    159171 
     172        cherokee_buffer_mrproper (&logger->now_dtm); 
    160173        cherokee_buffer_mrproper (&logger->referer); 
    161174        cherokee_buffer_mrproper (&logger->useragent); 
     
    181194build_log_string (cherokee_logger_ncsa_t *logger, cherokee_connection_t *cnt, cherokee_buffer_t *buf) 
    182195{ 
    183         long int           z; 
    184196        ret_t              ret; 
     197        size_t             username_len = 0; 
     198        cuint_t            method_len = 0; 
     199        cuint_t            version_len = 0; 
    185200        char              *username; 
    186201        const char        *method; 
    187202        const char        *version; 
    188         struct tm         *conn_time; 
    189203        char               ipaddr[CHE_INET_ADDRSTRLEN]; 
    190         static long       *this_timezone = NULL; 
    191204        cherokee_buffer_t *request; 
    192205 
    193         /* Read the bogonow value from the server 
    194          */ 
    195         conn_time = &CONN_THREAD(cnt)->bogo_now_tm; 
    196  
    197         /* Get the timezone reference 
    198          */ 
    199         if (this_timezone == NULL) { 
    200                 this_timezone = cherokee_get_timezone_ref(); 
    201         } 
    202          
    203         z = - (*this_timezone / 60); 
     206        /* Read the bogonow value from the thread and 
     207         * if time has changed then recreate the date-time string. 
     208         */ 
     209        if (unlikely (logger->now_time != CONN_THREAD(cnt)->bogo_now)) { 
     210                struct tm *pnow_tm; 
     211 
     212                logger->now_time = CONN_THREAD(cnt)->bogo_now; 
     213                pnow_tm = &CONN_THREAD(cnt)->bogo_now_tm; 
     214                cherokee_buffer_clean (&logger->now_dtm); 
     215                cherokee_buffer_add_va (&logger->now_dtm,  
     216                                " [%02d/%s/%d:%02d:%02d:%02d %c%02d%02d] \"", 
     217                                pnow_tm->tm_mday,  
     218                                month[pnow_tm->tm_mon],  
     219                                1900 + pnow_tm->tm_year, 
     220                                pnow_tm->tm_hour,  
     221                                pnow_tm->tm_min,  
     222                                pnow_tm->tm_sec, 
     223                                (logger->tz < 0) ? '-' : '+',  
     224                                (int) (logger->tz / 60),  
     225                                (int) (logger->tz % 60) 
     226                                ); 
     227        } 
    204228 
    205229        memset (ipaddr, 0, sizeof(ipaddr)); 
     
    209233         */ 
    210234        if (cnt->validator && !cherokee_buffer_is_empty (&cnt->validator->user)) { 
     235                username_len = cnt->validator->user.len; 
    211236                username = cnt->validator->user.buf; 
    212237        } else { 
     238                username_len = 1; 
    213239                username = "-"; 
    214240        } 
     
    216242        /* Get the method and version strings 
    217243         */ 
    218         ret = cherokee_http_method_to_string (cnt->header.method, &method, NULL); 
     244        ret = cherokee_http_method_to_string (cnt->header.method, &method, &method_len); 
    219245        if (unlikely(ret < ret_ok)) return ret; 
    220246 
    221         ret = cherokee_http_version_to_string (cnt->header.version, &version, NULL); 
     247        ret = cherokee_http_version_to_string (cnt->header.version, &version, &version_len); 
    222248        if (unlikely(ret < ret_ok)) return ret; 
    223249 
     
    227253 
    228254        /* Build the log string 
    229          */ 
    230         cherokee_buffer_add_va (buf,  
    231                                 "%s - %s [%02d/%s/%d:%02d:%02d:%02d %c%02d%02d] \"%s %s %s\" %d " FMT_OFFSET, 
    232                                 ipaddr, 
    233                                 username,  
    234                                 conn_time->tm_mday,  
    235                                 month[conn_time->tm_mon],  
    236                                 1900 + conn_time->tm_year, 
    237                                 conn_time->tm_hour,  
    238                                 conn_time->tm_min,  
    239                                 conn_time->tm_sec, 
    240                                 (z < 0) ? '-' : '+',  
    241                                 (int) z/60,  
    242                                 (int) z%60,  
    243                                 method, 
    244                                 request->buf,  
    245                                 version,  
    246                                 cnt->error_code, 
    247                                 (CST_OFFSET) (cnt->range_end - cnt->range_start)); 
     255         * 
     256         * "%s - %s [%02d/%s/%d:%02d:%02d:%02d %c%02d%02d] \"%s %s %s\" %d " 
     257         * FMT_OFFSET 
     258         */ 
     259        cherokee_buffer_add        (buf, ipaddr, strlen(ipaddr)); 
     260        cherokee_buffer_add_str    (buf, " - "); 
     261        cherokee_buffer_add        (buf, username, username_len); 
     262        cherokee_buffer_add_buffer (buf, &logger->now_dtm); 
     263        cherokee_buffer_add        (buf, method, method_len); 
     264        cherokee_buffer_add_str    (buf, " "); 
     265        cherokee_buffer_add_buffer (buf, request); 
     266        cherokee_buffer_add_str    (buf, " "); 
     267        cherokee_buffer_add        (buf, version, version_len); 
     268        cherokee_buffer_add_str    (buf, "\" "); 
     269        cherokee_buffer_add_long10 (buf, cnt->error_code); 
     270        cherokee_buffer_add_str    (buf, " "); 
     271        cherokee_buffer_add_ullong10 (buf, (cullong_t) (cnt->range_end - cnt->range_start)); 
    248272 
    249273        /* Look for the "combined" information 
    250274         */ 
    251         if (logger->combined) { 
     275        if (!logger->combined) { 
     276                cherokee_buffer_add_str (buf, "\n"); 
     277                return ret_ok; 
     278        } 
     279 
     280        /* "combined" information 
     281         */ 
     282        { 
    252283                cherokee_buffer_t *referer   = &logger->referer; 
    253                 cherokee_buffer_t *useragent = &logger->referer
     284                cherokee_buffer_t *useragent = &logger->useragent
    254285 
    255286                cherokee_buffer_clean (referer); 
     
    265296                        cherokee_buffer_add_str    (buf, "\" \""); 
    266297                } else { 
    267                         cherokee_buffer_add_str (buf, "\"-\" \""); 
     298                        cherokee_buffer_add_str (buf, " \"-\" \""); 
    268299                } 
    269300                 
     
    271302                        cherokee_buffer_add_buffer (buf, useragent); 
    272303                }  
    273                 cherokee_buffer_add_str (buf, "\""); 
    274         } 
    275  
    276         cherokee_buffer_add_str (buf, "\n"); 
     304                cherokee_buffer_add_str (buf, "\"\n"); 
     305        } 
    277306 
    278307        return ret_ok; 
  • cherokee/trunk/cherokee/logger_ncsa.h

    r618 r624  
    3030#define CHEROKEE_LOGGER_NCSA_H 
    3131 
     32#include <time.h> 
    3233#include "common-internal.h" 
    3334#include "connection.h" 
     
    4041 
    4142        cherokee_boolean_t combined; 
     43 
     44        long               tz; 
     45        time_t             now_time; 
     46 
     47        cherokee_buffer_t  now_dtm; 
    4248        cherokee_buffer_t  referer; 
    4349        cherokee_buffer_t  useragent; 
  • cherokee/trunk/cherokee/logger_writer.c

    r618 r624  
    4848        cherokee_buffer_init (&writer->buffer); 
    4949 
    50         cherokee_buffer_ensure_size (&writer->buffer, writer->max_bufsize + 1); 
     50        cherokee_buffer_ensure_size (&writer->buffer, writer->max_bufsize + 4096); 
    5151 
    5252        return ret_ok;