我的目标是创建一个“日志”应用程序,除了我的主应用程序,将用于几个自定义处理程序类,过滤器等,以及其他错误和统计报告.但是当我为我的Django项目运行开发服务器时,我收到错误:
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指令如下所示:
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而不导入任何东西,但我得到一个类似的错误,说“模块”没有属性“模型”.
我的日志应用程序位于我安装的应用程序中,并包含__init__.py.
解决方法
看起来你正在进行循环导入.您无法在自身导入settings.py的模块中定义处理程序类
它记录在https://docs.djangoproject.com/en/dev/topics/logging/#topic-logging-parts-handlers(搜索’循环进口’)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。