Kann nicht registrieren custom logging-handler-Klasse mit Django dictConfig
Mein Ziel ist, erstellen Sie eine "log" - app, abgesehen von meinem Haupt-app, die für mehrere benutzerdefinierte handler-Klassen, Filter, etc, und andere Fehler-und reporting stat. Aber beim ausführen der dev-server für meine Django-Projekt, erhalte ich die Fehlermeldung:
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'
Meine LOGGING-Direktive in den Einstellungen sieht wie folgt aus:
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,
},
}
}
Das layout von meinem "log" - app ist ziemlich einfach, und aktuell:
log/
__init__.py
handlers.py
models.py
models.py enthält ein einzelnes Modell, LogHandler:
from django.db import models
class LogRecord(models.Model):
....
....
und handlers.py enthält eine einzige Prozedur:
import logging
from models import LogRecord
class db_handler(logging.Handler):
def emit(self, record):
....
....
Den Fehler, soweit ich das beurteilen kann, bezieht sich auf die von Modellen importieren LogRecord Linie. Ich habe versucht mit Projekt.log.Modelle und log.Modelle, die aber beide die gleichen Ergebnisse liefern. Ich habe auch versucht, das verschieben der hf in models.py und nicht alles importieren, aber ich bekomme eine ähnliche Fehlermeldung, dass "Modul" hat kein Attribut "Modelle".
Meine log-app ist in meinen installierten apps, und enthält eine __init__.py.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht es aus wie Sie immer Runder importieren. Sie kann nicht definieren, eine handler-Klasse, in ein Modul, mit dem sich die Einfuhren settings.py
Es ist dokumentiert bei https://docs.djangoproject.com/en/dev/topics/logging/#topic-logging-parts-handlers (Suche für "zirkuläre Importe')