我們有一個令人討厭的問題,我們發現當我們的服務器上運行mod_python時,python日誌記錄模塊的行爲不同。當執行的外殼,或與的runserver命令或mod_wsgi的Django的相同的代碼,該行爲是正確的:python日誌記錄模塊在使用mod_python時的不同行爲
import logging
logger = logging.getLogger('site-errors')
logging.debug('logger=%s' % (logger.__dict__))
logging.debug('logger.parent=%s' % (logger.parent.__dict__))
logger.error('some message that is not logged.')
我們那麼下面的記錄:
2009-05-28 10 :36:43,440,DEBUG,error_middleware.py:31,[logger = {'name':'site-errors','parent':< logging.RootLogger instance at 0x85f8aac >,'handlers':[],'level' :0,'disabled':0,'manager':< logging.Manager實例在0x85f8aec >,'propagate':1,'filters':[]}]
2009-05-28 10:36:43,440,DEBUG,error_middleware.py:32,[logger.parent = {'name': 'root','parent':None,'handlers': [< logging 10, '禁用':在 0x8ec612c >, 在0x8ec616c >], '等級' < logging.handlers.RotatingFileHandler 實例.StreamHandler實例0, '傳播':1, '過濾器':[]}]
可以看到,沒有處理程序或級別設置爲兒童記錄器'站點錯誤'。
MONITOR_LOGGING_CONFIG = ROOT + 'error_monitor_logging.conf'
import logging
import logging.config
logging.config.fileConfig(MONITOR_LOGGING_CONFIG)
if CONFIG == CONFIG_DEV:
DB_LOGLEVEL = logging.INFO
else:
DB_LOGLEVEL = logging.WARNING
的第二個問題是,我們也是在駐留該文件夾error_middleware.py在__init__.py添加自定義處理程序:
日誌記錄配置在settings.py完成
import logging
from django.conf import settings
from db_log_handler import DBLogHandler
handler = DBLogHandler()
handler.setLevel(settings.DB_LOGLEVEL)
logging.root.addHandler(handler)
自定義處理程序無法在日誌中看到!
如果有人知道問題所在,請告訴我們!不要猶豫,要求提供更多信息。這肯定會有助於解決問題。
+1使用mod_wsgi。 wsgi應用程序意味着您可以部署在其他服務器軟件上,並且mod_python會特別吸引人。 – nosklo 2009-05-28 10:56:08