내가 사용자 정의 파이썬 데이터베이스 로거 갖는 원형의 수입
import logging
from logging import Handler
from logger.models import SearchLog
class DBHandler(Handler,object):
model = None
def __init__(self, model):
super(DBHandler, self).__init__()
mod = __import__(model)
components = name.split('.')
for comp in components[1:]:
mod = getattr(mod, comp)
self.model = mod
def emit(self,record):
log_entry = self.model(level=record.levelname, message=record.msg)
log_entry.save()
logging.Handler
확장하는 모델을 dB로 로그인 할 때 내 자신의 로그 핸들러를 만들려고하고이 로그 설정입니다 :'db_search_log':{
'level': 'INFO',
'class': 'db_logger.handlers.DBHandler',
'model': 'db_logger.models.SearchLog',
'formatter': 'verbose',
}
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/home/james/virtualenv/hydrogen/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
utility.execute()
File "/home/james/virtualenv/hydrogen/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/james/virtualenv/hydrogen/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 252, in fetch_command
app_name = get_commands()[subcommand]
File "/home/james/virtualenv/hydrogen/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 101, in get_commands
apps = settings.INSTALLED_APPS
File "/home/james/virtualenv/hydrogen/local/lib/python2.7/site-packages/django/utils/functional.py", line 184, in inner
self._setup()
File "/home/james/virtualenv/hydrogen/local/lib/python2.7/site-packages/django/conf/__init__.py", line 42, in _setup
self._wrapped = Settings(settings_module)
File "/home/james/virtualenv/hydrogen/local/lib/python2.7/site-packages/django/conf/__init__.py", line 135, in __init__
logging_config_func(self.LOGGING)
File "/usr/lib/python2.7/logging/config.py", line 777, in dictConfig
dictConfigClass(config).configure()
File "/usr/lib/python2.7/logging/config.py", line 575, in configure
'%r: %s' % (name, e))
ValueError: Unable to configure handler 'db_search_log': Unable to configure handler 'db_search_log': 'module' object has no attribute 'handlers'
▾
: 나는 다음과 오류를 얻고있다 그러나, 스택 트레이스를 참조
db_logger/
__init__.py
__init__.pyc
handlers.py
handlers.pyc
log_handlers.pyc
models.py
models.pyc
router.py
router.pyc
tests.py
views.py
순환적인 설정 가져 오기 때문에 @istruble이 지적 했으므로 어떻게 피할 수 있으며 데이터베이스 모델에 계속 로그인 할 수 있습니까?
어떻게 실행하나요? 당신은'python -m pdb'로 시작하거나'import pdb; settings.py에서 pdb.set_trace()를 실행하고 계속하십시오. 그러면 오류가 발생했을 때 pdb 프롬프트가 나타나고 상태를 검사 할 수 있습니까? –
아마도 settings.py를 순환으로 가져올 수 있습니까? 문서의이 섹션에서 위로 6 줄 위로 스크롤하십시오. https://docs.djangoproject.com/en/dev/topics/logging/#custom-logging-configuration – istruble
@struble 그렇습니다. 로그 가져 오기 도구는 순환 가져 오기 때문입니다. 모델... –