2015-05-28 3 views
2

Я пытаюсь выяснить, что входит в Django (проверка журнала Python сама по себе тоже в этом случае).Вход в Django

У меня есть следующий в моем settings.py

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'handlers': { 
     'file': { 
      'level': 'DEBUG', 
      'class': 'logging.FileHandler', 
      'filename': '/home/afzalsh/logs/debug.log', 
     }, 
    }, 
    'loggers': { 
     'django.request': { 
      'handlers': ['file'], 
      'level': 'DEBUG', 
      'propagate': True, 
     }, 
    }, 
} 

Это точный код, как то, что Джанго документация имеет в качестве первого примера.

Затем у меня есть сообщение журнала в представлении класса.

import logging 
. 
. 
. 
class StationHome(View): 
    . 
    . 
    . 
    def post(self,request, pk): 
     station = Station.objects.get(pk=pk) 
     form = StationForm(request.POST, instance=station) 
     if form.is_valid(): 
      logger = logging.getLogger(__name__) 
      logger.error("Yep!") 
      form.save() 
      return HttpResponseRedirect(reverse("home_station", 
               kwargs={'pk':pk}, 
              ) 
            ) 
     else: 
      return HttpResponse("Form Invalid") 
. 
. 
. 

Файл debug.log получил создан, но он не получает заселена с любым сообщением о переходе через конкретный код. Ожидаемый процесс действительно произойдет.

ответ

1

Вы запросили регистратор, связанный с __name__, так что вы получите один называется так же, как текущий модуль Python. Однако только тот, который вы на самом деле настроили, - «django.request». Вы должны использовать это в своем обращении к getLogger.

+0

Спасибо. Вот и все. Не могли бы вы рассказать мне об этом; Первоначально я передал 'django.request' вместо' 'django.request'', поэтому мой файл журнала заполнил соответствующие сообщения об ошибках. Я просто выбрал и удалил весь текст. Затем сообщение «Yep» не появилось после этого. Только после того, как я перезапустил сервер, это произошло. Не могли бы вы рассказать мне, почему? –

0

В ваших настройках ваш диктор обработчика содержит уровень «debug» для файла, где, как и в вашем коде, вы используете уровень «error» для регистрации.

logger.error("Yep!") 

Попробуйте использовать уровень «debug» в своем коде. Что-то вроде этого:

logger.debug("Yep!") 

также разместил здесь свои настройки, чтобы вы могли использовать это как ссылку.

{ 
'version': 1, 
'disable_existing_loggers': True, 
'formatters': { 
    'standard' : { 
     'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s", 
     'datefmt' : "%d/%b/%Y %H:%M:%S" 
     }, 
    }, 
'handlers': { 

    'console':{ 
     'level': 'DEBUG', 
     'class': 'logging.StreamHandler' 
    }, 
    'null' : { 
     'level':'DEBUG', 
     'class':'django.utils.log.NullHandler', 
     }, 
    'file' : { 
     'level': 'DEBUG', 
     'class': 'logging.FileHandler', 
     'filename': 'debug.log', 
     }, 
    'mail_admins': { 
     'level': 'ERROR', 
     'class': 'django.utils.log.AdminEmailHandler' 
    } 
}, 
'loggers': { 
    'django.request': { 
     'handlers': ['mail_admins'], 
     'level': 'ERROR', 
     'propagate': True, 
    }, 
    'django': { 
     'handlers': ['file'], 
     'propogate': True, 
     'level': 'DEBUG', 
     }, 
    'matchroom_app':{ 
     'handlers' : ['file'], 
     'level': 'DEBUG', 
     }, 
    'matchroom_post':{ 
     'handlers' : ['file'], 
     'level' : 'DEBUG', 
     }, 
    'matchroom_social':{ 
     'handlers': ['file'], 
     'level' : 'DEBUG', 
     }, 
} 

}

+0

Это не так: DEBUG - это самый низкий уровень, поэтому все будет записано в журнал. –

+0

Ох. да. Поскольку DEBUG является самым низким уровнем, все должно быть зарегистрировано. Я думаю, что вы получили правильный ответ. В любом случае, я надеюсь, что мои настройки помогут. – avichalp

Смежные вопросы