Ведение журнала Django не работает, несмотря на правильные настройки

Проблема и предыстория

Привет, у меня есть проект Django, использующий Django 2.2.28 и Python 3.5.2.

Действующий сайт работает нормально, за исключением одной функции, которую я пытаюсь отладить.

Раньше я использовал ведение журнала, но по какой-то причине сейчас оно не работает.

Вот мой код...

Production_settings.py

Я вызываю этот файл в 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,
        },
    },
}

view.py

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')

Что я пробовал

  1. Я попробовал все вышеперечисленное, используя только настройки production_settings.py... Ничего не появляется.

  2. То же, что и 1, но с импортом logging и вызовом в каждом важном блоке кода.

  3. Я прочитал документацию по logger.debug() , а также этот ответ, который я реализовал выше, как вы можете видеть.

  4. Я также перечитал документацию по ведению журналов Django.

  5. Я переместил LOGGING из production_settings.py в settings.py... Вчера я исправил ошибку, из-за которой django не переопределял переменную DATABASES в settings.py из production_settings.py, а вместо этого создавал базу данных sqlite3 и выдавал ошибки из settings.py, и единственный способ это исправить был делая это.

  6. Для каждого изменения, которое я сделал выше: я всегда перезапускал wsgi и веб-сайт (привязанную службу сокетов Unix, поскольку на этом сервере работает более одного сайта, и оба сайта работают нормально, за исключением этой проблемы на одном из их). Кэшированные значения для них не конфликтуют, мои пути к файлам верны и т. д.

Вопрос

Почему это не работает? Что мне не хватает?

Раньше это прекрасно работало в других проектах, но я понятия не имею, почему этого не происходит сейчас.

Спасибо!

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот обходной путь. Я еще раз тестировал и тестировал свой код, приведенный выше, и не вижу в нем ничего плохого, даже перечитал все соответствующие страницы документации еще раз, так что, вероятно, это просто ошибка в этой версии.

В любом случае, вот решение для тех, кто тоже сталкивается с этой проблемой.

Просто убедитесь, что у вашего пользователя Linux есть права на запись по указанному ниже пути к файлу.

Просмотры.py

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')

settings.py или Production_settings.py

# LOGGING = {...} # is not necessary since the above does it fine. Probably just a bug like I mentioned with DATABASES.

Другие вопросы по теме