我的目标是创建一个“日志”应用程序,除了我的主要应用程序,将用于几个自定义处理程序类,过滤器等,以及其他错误和统计报告。但运行我的Django项目开发服务器时,我收到错误:不能注册自定义日志处理类与Django dictConfig
File "/Library/Python/2.7/site-packages/Django-1.3-py2.7.egg/django/conf/__init__.py", line 42, in _setup
self._wrapped = Settings(settings_module)
File "/Library/Python/2.7/site-packages/Django-1.3-py2.7.egg/django/conf/__init__.py", line 139, in __init__
logging_config_func(self.LOGGING)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/config.py", line 776, in dictConfig
dictConfigClass(config).configure()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/config.py", line 575, in configure
'%r: %s' % (name, e))
ValueError: Unable to configure handler 'db_handler': Unable to configure handler 'db_handler': 'module' object has no attribute 'models'
我的设置登录指令的样子:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'default': {
'format': '[%(asctime)s] %(levelname)s::(%(process)d %(thread)d)::%(module)s - %(message)s'
},
},
'handlers': {
'db_handler': {
'level': 'DEBUG',
'class': 'Project.log.handlers.db_handler'
},
'file_handler': {
'level': 'DEBUG',
'formatter':'default',
'class': 'logging.TimedRotatingFileHandler',
'filename':'Custom_log',
'when':'midnight',
'interval':1
},
},
'loggers': {
'django.request': {
'handlers': ['db_handler'],
'level': 'DEBUG',
'propagate': True,
},
}
}
我的“日志”布局应用程序是非常简单的,目前:
log/
__init__.py
handlers.py
models.py
models.py都包含一个模型,LogHandler:
from django.db import models
class LogRecord(models.Model):
....
....
和handlers.py包含一个单独的处理程序:
import logging
from models import LogRecord
class db_handler(logging.Handler):
def emit(self, record):
....
....
错误,据我所知,从模型指的是进口的LogRecord线。我曾尝试使用project.log.models和log.models,但都产生相同的结果。我也尝试将处理程序移入models.py并且不导入任何东西,但是我得到一个类似的错误,说“模块”没有属性“模型”。
我的日志应用程序是在我安装的应用程序,并包含一个__ 初始化 __的.py。
我也有同样的问题一个模块中的处理程序类,那么,我们如何解决这个问题? –
我认为这只是意味着你的日志处理程序本身不能是一个django应用程序。您需要将其编码为独立于settings.py。例如,如果你想登录到一个mysql数据库,你将需要自己编写代码,而不是直接使用django的ORM。 – hoskeri
我想出了一个解决方法http://stackoverflow.com/questions/12452904/custom-python-database-logger-having-circular-import/12468007#12468007 –