comparison src/core/ngx_log.c @ 2765:6d358aeaa989

ngx_log_errno()
author Igor Sysoev <igor@sysoev.ru>
date Mon, 27 Apr 2009 13:17:33 +0000
parents d4a717592877
children 9d986c4e796f
comparison
equal deleted inserted replaced
2764:d4a717592877 2765:6d358aeaa989
124 p = ngx_vslprintf(p, last, fmt, args); 124 p = ngx_vslprintf(p, last, fmt, args);
125 125
126 #endif 126 #endif
127 127
128 if (err) { 128 if (err) {
129 129 p = ngx_log_errno(p, last, err);
130 if (p > last - 50) {
131
132 /* leave a space for an error code */
133
134 p = last - 50;
135 *p++ = '.';
136 *p++ = '.';
137 *p++ = '.';
138 }
139
140 #if (NGX_WIN32)
141 p = ngx_slprintf(p, last, ((unsigned) err < 0x80000000)
142 ? " (%d: " : " (%Xd: ", err);
143 #else
144 p = ngx_slprintf(p, last, " (%d: ", err);
145 #endif
146
147 p = ngx_strerror_r(err, p, last - p);
148
149 if (p < last) {
150 *p++ = ')';
151 }
152 } 130 }
153 131
154 if (level != NGX_LOG_DEBUG && log->handler) { 132 if (level != NGX_LOG_DEBUG && log->handler) {
155 p = log->handler(log, p, last - p); 133 p = log->handler(log, p, last - p);
156 } 134 }
234 212
235 va_start(args, fmt); 213 va_start(args, fmt);
236 p = ngx_vslprintf(errstr, last, fmt, args); 214 p = ngx_vslprintf(errstr, last, fmt, args);
237 va_end(args); 215 va_end(args);
238 216
239 if (p > errstr + NGX_MAX_ERROR_STR - NGX_LINEFEED_SIZE) {
240 p = errstr + NGX_MAX_ERROR_STR - NGX_LINEFEED_SIZE;
241 }
242
243 if (err) { 217 if (err) {
244 218 p = ngx_log_errno(p, last, err);
245 if (p > last - 50) { 219 }
246 220
247 /* leave a space for an error code */ 221 if (p > last - NGX_LINEFEED_SIZE) {
248 222 p = last - NGX_LINEFEED_SIZE;
249 p = last - 50; 223 }
250 *p++ = '.'; 224
251 *p++ = '.'; 225 ngx_linefeed(p);
252 *p++ = '.'; 226
253 } 227 (void) ngx_write_fd(ngx_stderr, errstr, p - errstr);
228 }
229
230
231 u_char *
232 ngx_log_errno(u_char *buf, u_char *last, ngx_err_t err)
233 {
234 if (buf > last - 50) {
235
236 /* leave a space for an error code */
237
238 buf = last - 50;
239 *buf++ = '.';
240 *buf++ = '.';
241 *buf++ = '.';
242 }
254 243
255 #if (NGX_WIN32) 244 #if (NGX_WIN32)
256 p = ngx_slprintf(p, last, ((unsigned) err < 0x80000000) 245 buf = ngx_slprintf(buf, last, ((unsigned) err < 0x80000000)
257 ? " (%d: " : " (%Xd: ", err); 246 ? " (%d: " : " (%Xd: ", err);
258 #else 247 #else
259 p = ngx_slprintf(p, last, " (%d: ", err); 248 buf = ngx_slprintf(buf, last, " (%d: ", err);
260 #endif 249 #endif
261 250
262 p = ngx_strerror_r(err, p, last - p); 251 buf = ngx_strerror_r(err, buf, last - buf);
263 252
264 if (p < last) { 253 if (buf < last) {
265 *p++ = ')'; 254 *buf++ = ')';
266 } 255 }
267 } 256
268 257 return buf;
269 ngx_linefeed(p);
270
271 (void) ngx_write_fd(ngx_stderr, errstr, p - errstr);
272 } 258 }
273 259
274 260
275 ngx_log_t * 261 ngx_log_t *
276 ngx_log_init(u_char *prefix) 262 ngx_log_init(u_char *prefix)