我正在我的Django應用程序通過uwsgi服務器和我開始32個進程在我的init腳本-args是:UWSGI
ARGS="--pidfile ${PIDFILE} --uid ${UID} -s /tmp/${NAME}.sock --pythonpath ${GCS_HOME}/server/src/gcs --master -w wsgi -d ${GCS_HOME}/logs/uwsgi.log -p 32 -z 30"
版本的Python 2.6.5,Django的1.2.1,uWSGI 0.9.5.1
我想擁有一個日誌文件,因此我使用了基於多處理的日誌處理程序,如question 641420中所述。
multilogging處理程序在我有一個簡單的測試應用程序中工作正常,當我運行帶有werkzeug的manage.py runserver_plus時,但是當我使用django和uwsgi運行時沒有記錄任何內容(我沒有從uwsgi雖然過程)。
我WSGI文件如下,如果任何人都可以認同我的配置有問題或正在發生的事情我會很感激的解釋:
APP_VIRTUAL_ENV = "/home/devadmin/gcs/server/gcs_env/"
APP_PARENT_PATH = "/home/devadmin/gcs/server/src/"
##
import sys
# Redirect stdout to comply with WSGI
sys.stdout = sys.stderr
import os, site
# Set the settings module django should use
os.environ['DJANGO_SETTINGS_MODULE'] = "gcs.settings"
# set the sys.path
site_packages_subpath = "/lib/python%s.%s/site-packages" % (sys.version_info[0]\
, sys.version_info[1],)
site_packages_path = os.path.join(APP_VIRTUAL_ENV, site_packages_subpath[1:])
sys_path = []
for path in sys.path:
if site_packages_subpath in path and not path.startswith(APP_VIRTUAL_ENV):
continue
sys_path.append(path)
sys.path = [ APP_PARENT_PATH ]
sys.path += sys_path
site.addsitedir(site_packages_path)
# reorder sys.path
for path in sys_path:
sys.path.remove(path)
sys.path += sys_path
# setup logging
import os.path
import logging
import logging.config
logging.config.fileConfig(os.path.join(os.path.dirname(__file__), "logging.conf\
"))
很難說,你的配置文件是什麼樣子的?你運行的是什麼版本的Python?您正在導入但不使用`multiproc_handler`,並且由於某種原因,您沒有使用在實際的`fileConfig`調用中計算出的`log_conf_file`。 – 2010-11-26 11:40:43
添加上面的版本並從wsgi.py中刪除虛假行(它們是我在做某些調試時留下的。還指出,當我使用werkzeug/runserver_plus時,日誌記錄是可以的。所以它會表明我的日誌記錄不能通過wsgi.py正確初始化。當我使用標準的Python日誌處理程序(RotatingLogFileHandler)時,我得到日誌輸出,但這不是多個uwsgi進程的解決方案。 – rtmie 2010-11-26 13:42:51