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