Несколько файлов журналов (для каждого проекта WSGI) в Apache под одним VirtualHost - PullRequest
0 голосов
/ 14 января 2011

В настоящее время я запускаю установку, где различные проекты обслуживаются по URL:

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

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

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

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

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

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

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

1 Ответ

0 голосов
/ 15 января 2011

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

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

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

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