2011-01-14 1 views
0

Я в настоящее время работает установка, где различные проекты подаются в соответствии с URL:Несколько файлов Logging (в WSGI проекта) в Apache под одной VirtualHost

http://machine_address/project_nameA 
http://machine_address/project_nameB 
(...) 

Поскольку все проекты подаются под тем же VirtualHost, Я закончил тем, что каждый проект обрабатывался другим WSGIDaemonProcess, чтобы их можно было перезапустить самостоятельно. Кроме того, каждый Daemon запускается под другим пользователем в соответствии с настройками проекта.

Единственное ограничение, которое у меня есть с этой установкой, заключается в том, что все журналы Apache по-прежнему попадают в один и тот же файл на /var/log/apache2/.

Что бы я хотел иметь, каждый проект записывает свой собственный журнал, позволяя владельцам данного проекта контролировать конкретные журналы проекта (доступ, ошибка, ...).

Я пытался использовать директивы ErrorLog и TransferLog, но так как они ограничены либо Server или VirtualHost уровне, я не мог понять способ полочкам журналы.

Так что этот вопрос делится на две части:

  • Как я могу иметь отдельные журналы на основе каждого проекта?
  • Есть ли способ создать эти журналы с определенной группой/владельцем и разрешением, чтобы владельцы проектов могли читать, но не записывать в журналы?

ответ

0

Невозможно установить конфигурацию mod_wsgi, чтобы сказать, что все stdout/stderr из процесса daemon mod_wsgi должны перейти в альтернативный файл журнала, чем эта настройка для VirtualHost.

Было рассмотрено, но некоторые сообщения об ошибках фактически генерируются из дочерних процессов Apache, и они не могут быть перенаправлены на этот файл журнала. Путаница от того, что сообщения попадают в два разных журнала, казалось, не стоит.

Если вы все еще хотите попробовать, то все, что вам нужно сделать, это как очень первая вещь в файле WSGI сценарий сделать что-то вроде:

import sys 
sys.stderr = sys.stdout = file('/tmp/daemon.log', 'a')