2011-08-05 9 views
5

के साथ कस्टम लॉगिंग हैंडलर क्लास पंजीकृत नहीं कर सकता मेरा लक्ष्य मेरे मुख्य ऐप के अलावा "लॉग" ऐप बनाना है, जिसका उपयोग कई कस्टम हैंडलर कक्षाओं, फ़िल्टर इत्यादि, और अन्य त्रुटि और स्टेट रिपोर्टिंग के लिए किया जाएगा। ,Django dictCigfig

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, 
     }, 
    } 
} 

मेरी "लॉग ऑन" के लेआउट एप्लिकेशन बहुत सरल है:

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' 

सेटिंग में मेरे काटना निर्देश की तरह दिखता है: लेकिन जब मेरे Django परियोजना के लिए देव सर्वर चल रहा है, मैं त्रुटि प्राप्त और वर्तमान में:

log/ 
    __init__.py 
    handlers.py 
    models.py 

models.py एक मॉडल, LogHandler शामिल हैं:

import logging 

from models import LogRecord 

class db_handler(logging.Handler): 
    def emit(self, record): 
     .... 
     .... 

त्रुटि, जहाँ तक मैं बता सकता हूँ, मॉडल से की चर्चा करते हुए आयात LogRecord लाइन:

from django.db import models 

class LogRecord(models.Model): 
    .... 
    .... 

और handlers.py एक भी हैंडलर शामिल हैं। मैंने project.log.models, और log.models का उपयोग करने का प्रयास किया है, लेकिन दोनों एक ही परिणाम उत्पन्न करते हैं। मैंने हैंडलर को models.py में ले जाने की कोशिश की है और कुछ भी आयात नहीं किया है, लेकिन मुझे एक समान त्रुटि मिल रही है कि "मॉड्यूल" में कोई विशेषता नहीं है "मॉडल"।

मेरे लॉग एप्लिकेशन मेरी इंस्टॉल किए गए एप्लिकेशन में है, और एक __ init __ .py शामिल हैं।

उत्तर

10

ऐसा लगता है कि आपको एक परिपत्र आयात मिल रहा है। आप एक मॉड्यूल जो अपने आप settings.py आयात

यह https://docs.djangoproject.com/en/dev/topics/logging/#topic-logging-parts-handlers पर दर्ज है

+2

मैं भी यही समस्या ('परिपत्र आयात' के लिए खोज) में एक हैंडलर वर्ग को परिभाषित नहीं कर सकते हैं, तो हम इस समस्या को कैसे ठीक करूं? –

+1

मुझे लगता है कि इसका मतलब है कि आपका लॉगिंग हैंडलर स्वयं डीजेंगो एप्लीकेशन नहीं हो सकता है। आपको सेटिंग.py से स्वतंत्र होने के लिए इसे कोड करने की आवश्यकता होगी। उदाहरण के लिए, यदि आप किसी mysql डीबी पर लॉग ऑन करना चाहते हैं, तो आपको कोड स्वयं लिखना होगा, और सीधे django के ORM का उपयोग नहीं करना होगा। – hoskeri

+0

मैं http://stackoverflow.com/questions/12452904/custom-python-database-logger-having-circular-import/12468007#12468007 के आसपास एक काम के साथ आया था –