Changeset 624
- Timestamp:
- 01/19/07 00:05:32 (2 years ago)
- Files:
-
- cherokee/trunk/ChangeLog (modified) (1 diff)
- cherokee/trunk/cherokee/buffer.c (modified) (1 diff)
- cherokee/trunk/cherokee/buffer.h (modified) (1 diff)
- cherokee/trunk/cherokee/logger_ncsa.c (modified) (8 diffs)
- cherokee/trunk/cherokee/logger_ncsa.h (modified) (2 diffs)
- cherokee/trunk/cherokee/logger_writer.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
cherokee/trunk/ChangeLog
r622 r624 1 2007-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 1 30 2007-01-18 Alvaro Lopez Ortega <alvaro@alobbs.com> 2 31 cherokee/trunk/cherokee/buffer.c
r606 r624 179 179 180 180 ret_t 181 cherokee_buffer_add (cherokee_buffer_t *buf, c har *txt, size_t size)181 cherokee_buffer_add (cherokee_buffer_t *buf, const char *txt, size_t size) 182 182 { 183 183 int free = buf->size - buf->len; cherokee/trunk/cherokee/buffer.h
r606 r624 63 63 void cherokee_buffer_swap_buffers (cherokee_buffer_t *buf, cherokee_buffer_t *second); 64 64 65 ret_t cherokee_buffer_add (cherokee_buffer_t *buf, c har *txt, size_t size);65 ret_t cherokee_buffer_add (cherokee_buffer_t *buf, const char *txt, size_t size); 66 66 ret_t cherokee_buffer_add_long10 (cherokee_buffer_t *buf, clong_t lNum); 67 67 ret_t cherokee_buffer_add_llong10 (cherokee_buffer_t *buf, cllong_t lNum); cherokee/trunk/cherokee/logger_ncsa.c
r618 r624 103 103 { 104 104 ret_t ret; 105 long *this_timezone = NULL; 105 106 cherokee_config_node_t *subconf; 106 107 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 107 117 /* Init the local buffers 108 118 */ 119 cherokee_buffer_init (&logger->now_dtm); 109 120 cherokee_buffer_init (&logger->referer); 110 121 cherokee_buffer_init (&logger->useragent); 122 cherokee_buffer_ensure_size (&logger->now_dtm, 64); 111 123 cherokee_buffer_ensure_size (&logger->referer, 1024); 112 124 cherokee_buffer_ensure_size (&logger->useragent, 512); … … 158 170 ret_t ret; 159 171 172 cherokee_buffer_mrproper (&logger->now_dtm); 160 173 cherokee_buffer_mrproper (&logger->referer); 161 174 cherokee_buffer_mrproper (&logger->useragent); … … 181 194 build_log_string (cherokee_logger_ncsa_t *logger, cherokee_connection_t *cnt, cherokee_buffer_t *buf) 182 195 { 183 long int z;184 196 ret_t ret; 197 size_t username_len = 0; 198 cuint_t method_len = 0; 199 cuint_t version_len = 0; 185 200 char *username; 186 201 const char *method; 187 202 const char *version; 188 struct tm *conn_time;189 203 char ipaddr[CHE_INET_ADDRSTRLEN]; 190 static long *this_timezone = NULL;191 204 cherokee_buffer_t *request; 192 205 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 } 204 228 205 229 memset (ipaddr, 0, sizeof(ipaddr)); … … 209 233 */ 210 234 if (cnt->validator && !cherokee_buffer_is_empty (&cnt->validator->user)) { 235 username_len = cnt->validator->user.len; 211 236 username = cnt->validator->user.buf; 212 237 } else { 238 username_len = 1; 213 239 username = "-"; 214 240 } … … 216 242 /* Get the method and version strings 217 243 */ 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); 219 245 if (unlikely(ret < ret_ok)) return ret; 220 246 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); 222 248 if (unlikely(ret < ret_ok)) return ret; 223 249 … … 227 253 228 254 /* 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)); 248 272 249 273 /* Look for the "combined" information 250 274 */ 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 { 252 283 cherokee_buffer_t *referer = &logger->referer; 253 cherokee_buffer_t *useragent = &logger-> referer;284 cherokee_buffer_t *useragent = &logger->useragent; 254 285 255 286 cherokee_buffer_clean (referer); … … 265 296 cherokee_buffer_add_str (buf, "\" \""); 266 297 } else { 267 cherokee_buffer_add_str (buf, " \"-\" \"");298 cherokee_buffer_add_str (buf, " \"-\" \""); 268 299 } 269 300 … … 271 302 cherokee_buffer_add_buffer (buf, useragent); 272 303 } 273 cherokee_buffer_add_str (buf, "\""); 274 } 275 276 cherokee_buffer_add_str (buf, "\n"); 304 cherokee_buffer_add_str (buf, "\"\n"); 305 } 277 306 278 307 return ret_ok; cherokee/trunk/cherokee/logger_ncsa.h
r618 r624 30 30 #define CHEROKEE_LOGGER_NCSA_H 31 31 32 #include <time.h> 32 33 #include "common-internal.h" 33 34 #include "connection.h" … … 40 41 41 42 cherokee_boolean_t combined; 43 44 long tz; 45 time_t now_time; 46 47 cherokee_buffer_t now_dtm; 42 48 cherokee_buffer_t referer; 43 49 cherokee_buffer_t useragent; cherokee/trunk/cherokee/logger_writer.c
r618 r624 48 48 cherokee_buffer_init (&writer->buffer); 49 49 50 cherokee_buffer_ensure_size (&writer->buffer, writer->max_bufsize + 1);50 cherokee_buffer_ensure_size (&writer->buffer, writer->max_bufsize + 4096); 51 51 52 52 return ret_ok;