Привет, у меня есть проект Django, использующий Django 2.2.28 и Python 3.5.2.
Действующий сайт работает нормально, за исключением одной функции, которую я пытаюсь отладить.
Раньше я использовал ведение журнала, но по какой-то причине сейчас оно не работает.
Вот мой код...
Я вызываю этот файл в wsgi.py. В настройках все работает как надо, а LOGGING
нет.
from .settings import *
DEBUG = False
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': '/home/myuser/proj_container/debug.log',
},
},
'loggers': {
'django.request': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': False,
},
},
}
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
def some_func(request):
...
if some_condition:
logger.debug('In some_condition block')
elif some_other_condition:
logger.debug('In some_other_condition block')
Я попробовал все вышеперечисленное, используя только настройки production_settings.py
... Ничего не появляется.
То же, что и 1, но с импортом logging
и вызовом в каждом важном блоке кода.
Я прочитал документацию по logger.debug() , а также этот ответ, который я реализовал выше, как вы можете видеть.
Я также перечитал документацию по ведению журналов Django.
Я переместил LOGGING
из production_settings.py
в settings.py
... Вчера я исправил ошибку, из-за которой django не переопределял переменную DATABASES
в settings.py
из production_settings.py
, а вместо этого создавал базу данных sqlite3 и выдавал ошибки из settings.py
, и единственный способ это исправить был делая это.
Для каждого изменения, которое я сделал выше: я всегда перезапускал wsgi и веб-сайт (привязанную службу сокетов Unix, поскольку на этом сервере работает более одного сайта, и оба сайта работают нормально, за исключением этой проблемы на одном из их). Кэшированные значения для них не конфликтуют, мои пути к файлам верны и т. д.
Почему это не работает? Что мне не хватает?
Раньше это прекрасно работало в других проектах, но я понятия не имею, почему этого не происходит сейчас.
Спасибо!
Вот обходной путь. Я еще раз тестировал и тестировал свой код, приведенный выше, и не вижу в нем ничего плохого, даже перечитал все соответствующие страницы документации еще раз, так что, вероятно, это просто ошибка в этой версии.
В любом случае, вот решение для тех, кто тоже сталкивается с этой проблемой.
Просто убедитесь, что у вашего пользователя Linux есть права на запись по указанному ниже пути к файлу.
import logging
logging.basicConfig(level=logging.DEBUG, filename='/home/myuser/path/to/debug.log') # will append by default, docs allow other values too.
logger = logging.getLogger(__name__)
def some_func(request):
...
if some_condition:
logger.debug('In some_condition block')
logger.debug('Object type == {}'.format(type(some_condition.attribute['key']['nested_key'])))
logger.debug('\n\n')
# etc
elif some_other_condition:
logger.debug('In some_other_condition block')
# LOGGING = {...} # is not necessary since the above does it fine. Probably just a bug like I mentioned with DATABASES.