Benutzerdefinierter Python-Datenbank-Logger mit zirkulärem Import

Ich versuche, meinen eigenen Protokoll-Handler zu erstellen, um in DB-Modellen zu protokollieren, wodurch die Protokollierung erweitert wird

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()

und das ist die log config:

'db_search_log':{
    'level': 'INFO',
    'class': 'db_logger.handlers.DBHandler',
    'model': 'db_logger.models.SearchLog',
    'formatter': 'verbose',
     }

Ich erhalte jedoch den folgenden Fehler (siehe Stacktrace):

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

Dank @istruble darauf hingewiesen, dass dies auf zirkuläre Importe von Einstellungen zurückzuführen ist, wie kann ich es vermeiden und trotzdem in die Datenbankmodelle einloggen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage