Mercurial > hg > nginx
comparison src/core/ngx_log.c @ 0:4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
The first code that uses "ngx_" prefix, the previous one used "gx_" prefix.
At that point the code is not yet usable. The first draft ideas are dated
back to 23.10.2001.
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Tue, 06 Aug 2002 16:39:45 +0000 |
parents | |
children | d220029ac7f3 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4eff17414a43 |
---|---|
1 | |
2 /* | |
3 TODO: log pid and tid | |
4 */ | |
5 | |
6 /* | |
7 "[time as ctime()] [alert] 412:3 (32)Broken pipe: anything" | |
8 | |
9 "[time as ctime()] [alert] (32)Broken pipe: anything" | |
10 "[time as ctime()] [alert] anything" | |
11 */ | |
12 | |
13 #include <ngx_config.h> | |
14 #include <ngx_errno.h> | |
15 #include <ngx_time.h> | |
16 #include <ngx_string.h> | |
17 #include <ngx_log.h> | |
18 | |
19 | |
20 static const char *err_levels[] = { | |
21 "emerg", "alert", "crit", "error", "warn", "notice", "info", "debug" | |
22 }; | |
23 | |
24 #if (HAVE_VARIADIC_MACROS) | |
25 void ngx_log_error_core(int level, ngx_log_t *log, ngx_err_t err, | |
26 const char *fmt, ...) | |
27 #else | |
28 void ngx_log_error_core(int level, ngx_log_t *log, ngx_err_t err, | |
29 const char *fmt, va_list args) | |
30 #endif | |
31 { | |
32 char errstr[MAX_ERROR_STR]; | |
33 ngx_tm_t tm; | |
34 size_t len; | |
35 #if (HAVE_VARIADIC_MACROS) | |
36 va_list args; | |
37 #endif | |
38 | |
39 ngx_localtime(&tm); | |
40 len = ngx_snprintf(errstr, sizeof(errstr), "%02d:%02d:%02d", | |
41 tm.ngx_tm_hour, tm.ngx_tm_min, tm.ngx_tm_sec); | |
42 | |
43 if (err) { | |
44 if ((unsigned) err < 0x80000000) | |
45 len += ngx_snprintf(errstr + len, sizeof(errstr) - len - 1, | |
46 " [%s] (%d)", | |
47 err_levels[level], err); | |
48 len += ngx_snprintf(errstr + len, sizeof(errstr) - len - 1, | |
49 " [%s] (%X)", | |
50 err_levels[level], err); | |
51 | |
52 len += ngx_strerror_r(err, errstr + len, sizeof(errstr) - len - 1); | |
53 if (len < sizeof(errstr) - 2) { | |
54 errstr[len++] = ':'; | |
55 errstr[len++] = ' '; | |
56 } else { | |
57 len = sizeof(errstr) - 2; | |
58 } | |
59 | |
60 } else { | |
61 len += ngx_snprintf(errstr + len, sizeof(errstr) - len - 1, | |
62 " [%s] ", err_levels[level]); | |
63 } | |
64 | |
65 #if (HAVE_VARIADIC_MACROS) | |
66 va_start(args, fmt); | |
67 len += ngx_vsnprintf(errstr + len, sizeof(errstr) - len - 1, fmt, args); | |
68 va_end(args); | |
69 #else | |
70 len += ngx_vsnprintf(errstr + len, sizeof(errstr) - len - 1, fmt, args); | |
71 #endif | |
72 | |
73 if (len > sizeof(errstr) - 2) | |
74 len = sizeof(errstr) - 2; | |
75 errstr[len] = '\n'; | |
76 errstr[len + 1] = '\0'; | |
77 | |
78 fputs(errstr, stderr); | |
79 | |
80 if (level == NGX_LOG_EMERG) | |
81 exit(1); | |
82 } | |
83 | |
84 #if !(HAVE_VARIADIC_MACROS) | |
85 | |
86 void ngx_log_error(int level, ngx_log_t *log, ngx_err_t err, | |
87 const char *fmt, ...) | |
88 { | |
89 va_list args; | |
90 | |
91 if (log->log_level >= level) { | |
92 va_start(args, fmt); | |
93 ngx_log_error_core(level, log, err, fmt, args); | |
94 va_end(args); | |
95 } | |
96 } | |
97 | |
98 void ngx_log_debug_core(ngx_log_t *log, const char *fmt, ...) | |
99 { | |
100 va_list args; | |
101 | |
102 va_start(args, fmt); | |
103 ngx_log_error_core(NGX_LOG_DEBUG, log, 0, fmt, args); | |
104 va_end(args); | |
105 } | |
106 | |
107 void ngx_assert_core(ngx_log_t *log, const char *fmt, ...) | |
108 { | |
109 va_list args; | |
110 | |
111 va_start(args, fmt); | |
112 ngx_log_error_core(NGX_LOG_ALERT, log, 0, fmt, args); | |
113 va_end(args); | |
114 } | |
115 | |
116 #endif |