我们有一个令人讨厌的问题,我们发现当我们的服务器上运行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