Amacım, ana uygulamam dışında, birkaç özel işleyici sınıfı, filtre vb. Ve diğer hata ve durum raporları için kullanılacak bir "günlük" uygulaması oluşturmaktır. ,Özel günlüğe kaydetme işleyicisi sınıfı Django dictConfig ile kaydedilemiyor
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,
},
}
}
benim "log" düzeni uygulaması oldukça basittir: ayarlarında
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'
Benim KAYITLARI direktifi gibi görünür: benim Django proje için dev sunucusu çalıştırırken Ama hata alırsınız şu anda:
log/
__init__.py
handlers.py
models.py
models.py tek bir model, LogHandler içerir:
import logging
from models import LogRecord
class db_handler(logging.Handler):
def emit(self, record):
....
....
hata, bildiğim kadarıyla söyleyebilirim, LogRecord çizgi ithalat modellerden bahsediyor:
from django.db import models
class LogRecord(models.Model):
....
....
ve handlers.py tek bir işleyici içerir. Project.log.models ve log.models kullanmayı denedim, ancak her ikisi de aynı sonuçları veriyor. Ayrıca, işleyiciyi models.py'ye taşımaya çalıştım ve hiçbir şey almamaya çalıştım, ancak "modül" ünün "model" özniteliğine sahip olmadığını söyleyen benzer bir hata alıyorum.
Benim günlük uygulaması benim yüklü uygulamalar olduğunu ve bir __ init __ .py içerir.
Ben de aynı sorunu yaşıyor ('dairesel ithalat' için ara) settings.py ithal eden bir modülde bir işleyici sınıfını tanımlamak edemez, bu yüzden bu sorunu çözmek nasıl? –
Bence bu sadece sizin logging işleyicinizin bir django uygulaması olamayacağı anlamına geliyor. Settings.py'den bağımsız olarak kodlamanız gerekecek. Örneğin, bir mysql db'ye giriş yapmak istiyorsanız, kodu kendiniz yazmanız ve doğrudan django'nun ORM'sini kullanmanız gerekmeyecektir. – hoskeri
http://stackoverflow.com/questions/12452904/custom-python-database-logger-having-circular-import/12468007#12468007 hakkında bir çalışma yaptım. –