Mercurial > hg > nginx
comparison src/http/modules/ngx_http_log_handler.c @ 26:53cb81681040
nginx-0.0.1-2002-12-15-09:25:09 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Sun, 15 Dec 2002 06:25:09 +0000 |
parents | |
children | a117a7fdf042 |
comparison
equal
deleted
inserted
replaced
25:a8b156554dfe | 26:53cb81681040 |
---|---|
1 | |
2 #include <ngx_config.h> | |
3 #include <ngx_core.h> | |
4 #include <ngx_string.h> | |
5 #include <ngx_alloc.h> | |
6 #include <ngx_time.h> | |
7 #include <ngx_http.h> | |
8 | |
9 | |
10 ngx_http_module_t ngx_http_log_module; | |
11 | |
12 | |
13 static char *months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", | |
14 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; | |
15 | |
16 | |
17 int ngx_http_log_handler(ngx_http_request_t *r) | |
18 { | |
19 size_t len; | |
20 char *line, *p; | |
21 ngx_tm_t tm; | |
22 | |
23 #if (WIN32) | |
24 len = 2 + 22 + 3 + 20 + 5 + 20 + 2; | |
25 #else | |
26 len = 2 + 22 + 3 + 20 + 5 + 20 + 1; | |
27 #endif | |
28 | |
29 len += r->connection->addr_text.len; | |
30 len += r->request_line.len; | |
31 | |
32 | |
33 ngx_test_null(line, ngx_palloc(r->pool, len), NGX_ERROR); | |
34 p = line; | |
35 | |
36 ngx_memcpy(p, r->connection->addr_text.data, r->connection->addr_text.len); | |
37 p += r->connection->addr_text.len; | |
38 | |
39 *p++ = ' '; | |
40 | |
41 ngx_localtime(&tm); | |
42 | |
43 *p++ = '['; | |
44 p += ngx_snprintf(p, 21, "%02d/%s/%d:%02d:%02d:%02d", | |
45 tm.ngx_tm_mday, months[tm.ngx_tm_mon], | |
46 tm.ngx_tm_year + 1900, | |
47 tm.ngx_tm_hour, tm.ngx_tm_min, tm.ngx_tm_sec); | |
48 | |
49 *p++ = ']'; | |
50 | |
51 *p++ = ' '; | |
52 | |
53 *p++ = '"'; | |
54 ngx_memcpy(p, r->request_line.data, r->request_line.len); | |
55 p += r->request_line.len; | |
56 *p++ = '"'; | |
57 | |
58 *p++ = ' '; | |
59 | |
60 p += ngx_snprintf(p, 4, "%d", r->headers_out.status); | |
61 | |
62 *p++ = ' '; | |
63 | |
64 p += ngx_snprintf(p, 21, QD_FMT, r->connection->sent); | |
65 | |
66 *p++ = ' '; | |
67 | |
68 p += ngx_snprintf(p, 21, "%u", r->connection->number); | |
69 | |
70 #if (WIN32) | |
71 *p++ = CR; *p++ = LF; | |
72 #else | |
73 *p++ = LF; | |
74 #endif | |
75 | |
76 write(1, line, len); | |
77 | |
78 return NGX_OK; | |
79 } |