Mercurial > hg > nginx
comparison src/core/ngx_log.c @ 2758:77264e0157ad
-p and --prefix=
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 27 Apr 2009 11:32:33 +0000 |
parents | 2d82d3cfbfa0 |
children | d4a717592877 |
comparison
equal
deleted
inserted
replaced
2757:9cc973b46af1 | 2758:77264e0157ad |
---|---|
271 (void) ngx_write_fd(ngx_stderr, errstr, p - errstr); | 271 (void) ngx_write_fd(ngx_stderr, errstr, p - errstr); |
272 } | 272 } |
273 | 273 |
274 | 274 |
275 ngx_log_t * | 275 ngx_log_t * |
276 ngx_log_init(void) | 276 ngx_log_init(u_char *prefix) |
277 { | 277 { |
278 u_char *p, *name; | |
279 size_t nlen, plen; | |
280 | |
278 ngx_log.file = &ngx_log_file; | 281 ngx_log.file = &ngx_log_file; |
279 ngx_log.log_level = NGX_LOG_NOTICE; | 282 ngx_log.log_level = NGX_LOG_NOTICE; |
283 | |
284 name = (u_char *) NGX_ERROR_LOG_PATH; | |
280 | 285 |
281 /* | 286 /* |
282 * we use ngx_strlen() here since BCC warns about | 287 * we use ngx_strlen() here since BCC warns about |
283 * condition is always false and unreachable code | 288 * condition is always false and unreachable code |
284 */ | 289 */ |
285 | 290 |
286 if (ngx_strlen(NGX_ERROR_LOG_PATH) == 0) { | 291 nlen = ngx_strlen(name); |
292 | |
293 if (nlen == 0) { | |
287 ngx_log_file.fd = ngx_stderr; | 294 ngx_log_file.fd = ngx_stderr; |
288 return &ngx_log; | 295 return &ngx_log; |
289 } | 296 } |
290 | 297 |
291 ngx_log_file.fd = ngx_open_file((u_char *) NGX_ERROR_LOG_PATH, | 298 p = NULL; |
292 NGX_FILE_APPEND, | 299 |
300 #if (NGX_WIN32) | |
301 if (name[1] != ':') { | |
302 #else | |
303 if (name[0] != '/') { | |
304 #endif | |
305 plen = 0; | |
306 | |
307 if (prefix) { | |
308 plen = ngx_strlen(prefix); | |
309 | |
310 #ifdef NGX_PREFIX | |
311 } else { | |
312 prefix = (u_char *) NGX_PREFIX; | |
313 plen = ngx_strlen(prefix); | |
314 #endif | |
315 } | |
316 | |
317 if (plen) { | |
318 name = malloc(plen + nlen + 2); | |
319 if (name == NULL) { | |
320 return NULL; | |
321 } | |
322 | |
323 p = ngx_cpymem(name, prefix, plen); | |
324 | |
325 if (!ngx_path_separator(*(p - 1))) { | |
326 *p++ = '/'; | |
327 } | |
328 | |
329 ngx_cpystrn(p, (u_char *) NGX_ERROR_LOG_PATH, nlen + 1); | |
330 | |
331 p = name; | |
332 } | |
333 } | |
334 | |
335 ngx_log_file.fd = ngx_open_file(name, NGX_FILE_APPEND, | |
293 NGX_FILE_CREATE_OR_OPEN, | 336 NGX_FILE_CREATE_OR_OPEN, |
294 NGX_FILE_DEFAULT_ACCESS); | 337 NGX_FILE_DEFAULT_ACCESS); |
295 | 338 |
296 if (ngx_log_file.fd == NGX_INVALID_FILE) { | 339 if (ngx_log_file.fd == NGX_INVALID_FILE) { |
297 ngx_log_stderr(ngx_errno, | 340 ngx_log_stderr(ngx_errno, |
298 "[emerg]: could not open error log file: " | 341 "[alert]: could not open error log file: " |
299 ngx_open_file_n " \"" NGX_ERROR_LOG_PATH "\" failed"); | 342 ngx_open_file_n " \"%s\" failed", name); |
300 | |
301 #if (NGX_WIN32) | 343 #if (NGX_WIN32) |
302 ngx_event_log(ngx_errno, | 344 ngx_event_log(ngx_errno, |
303 "could not open error log file: " | 345 "could not open error log file: " |
304 ngx_open_file_n " \"" NGX_ERROR_LOG_PATH "\" failed"); | 346 ngx_open_file_n " \"%s\" failed", name); |
305 #endif | 347 #endif |
306 | 348 |
307 return NULL; | 349 ngx_log_file.fd = ngx_stderr; |
350 } | |
351 | |
352 if (p) { | |
353 ngx_free(p); | |
308 } | 354 } |
309 | 355 |
310 return &ngx_log; | 356 return &ngx_log; |
311 } | 357 } |
312 | 358 |