2011-01-14 23 views
0

下我目前運行的位置不同項目根據URL提供的設置:多個日誌文件(每WSGI項目)在Apache在同一個虛擬主機

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

由於所有項目都在相同VirtualHost服務,我結束了由不同的WSGIDaemonProcess處理每個項目,使他們可以獨立重新啓動。另外,根據項目設置,每個Daemon都在不同的用戶下運行。

我對此設置的唯一限制是所有Apache日誌仍然會進入/var/log/apache2/上的同一文件。

我想要的是每個項目都編寫自己的日誌,允許給定項目的所有者監視項目特定日誌(訪問,錯誤...)。

我試圖使用ErrorLogTransferLog指令,但由於這些被限制要麼ServerVirtualHost水平,我無法想出一個辦法來劃分的日誌。

所以這個問題分爲兩個:

  • 我怎麼能在每個項目的基礎上單獨的日誌?
  • 有沒有辦法讓這些日誌被創建爲特定的組/所有者和權限,以便項目所有者可以讀取但不寫入日誌?

回答

0

沒有辦法通過mod_wsgi的配置來說明mod_wsgi守護程序進程中的所有stdout/stderr應該轉到備用日誌文件,而不是該虛擬主機的設置。

它已被考慮,但某些錯誤消息實際上是從Apache子進程生成的,並且這些錯誤消息不能被重定向到該日誌文件。有消息去兩個不同的日誌混淆似乎並不值得。

如果你仍然想嘗試,那麼所有你需要做的是在WSGI腳本文件的第一件事做這樣的事情:

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