0

現在、URL に従ってさまざまなプロジェクトが提供されるセットアップを実行しています。

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

すべてのプロジェクトは同じ の下で提供されるためVirtualHost、各プロジェクトを別々に処理して、WSGIDaemonProcess個別に再起動できるようにすることになりました。さらにDaemon、プロジェクトの設定に従って、それぞれが異なるユーザーの下で実行されます。

このセットアップに関する唯一の制限は、すべてのApacheログが .NET 上の同じファイルに保存されること/var/log/apache2/です。

私が望むのは、各プロジェクトが独自のログを作成し、特定のプロジェクトの所有者がプロジェクト固有のログ (アクセス、エラーなど) を監視できるようにすることです。

ErrorLogandTransferLogディレクティブを使用しようとしましたが、これらはServerまたはVirtualHostレベルに制限されているため、ログを区分化する方法がわかりませんでした。

したがって、この質問は2つに分けられます。

  • プロジェクトごとに個別のログを取得するにはどうすればよいですか?
  • これらのログを特定のグループ/所有者と権限で作成して、プロジェクト所有者がログを読み取ることはできるが書き込みはできないようにする方法はありますか?
4

1 に答える 1

0

mod_wsgi の構成を通じて、mod_wsgi デーモン プロセスからのすべての stdout/stderr が、VirtualHost のセットアップ以外の代替ログ ファイルに送られるようにする方法はありません。

考慮されましたが、特定のエラー メッセージが実際には Apache の子プロセスから生成され、そのログ ファイルにリダイレクトできませんでした。メッセージが 2 つの異なるログに送られることによる混乱は、それほど価値があるとは思えませんでした。

それでも試してみたい場合は、WSGI スクリプト ファイルで最初に次のようにするだけです。

import sys
sys.stderr = sys.stdout = file('/tmp/daemon.log', 'a')
于 2011-01-15T03:56:57.083 に答える