Невозможно увидеть сообщения регистрации в django, используя модуль регистрации - PullRequest
0 голосов
/ 30 декабря 2018

Я новичок в лесозаготовках.Я добавил код для входа в мой views.py файл и добавил настройки согласно документации django в моем settings.py файле.Однако файл logging.txt показывает другие исключения на уровне DEBUG или не выводит на уровне WARNING.Веб-сайт работает должным образом, и он работает на экземпляре EC2.

Вот код для моего views.py файла:

import logging

# Get an instance of a logger
logger = logging.getLogger(__name__)

def index(request):
    ...
    logger.error("THIS IS A LOG ERROR!!!")
    logger.warning("THIS IS A LOG WARNING!!!")

    ...
    return render(...)

Вот кодв моем settings.py файле:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': 'logging.txt',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
}

Что я делаю не так?

1 Ответ

0 голосов
/ 30 декабря 2018

Логгер, который вы настроили, называется django, который будет соответствовать всему коду в пакете django верхнего уровня - по сути, код фреймворка Django.

Для вашего собственного кода вам необходимо настроитьотдельный регистратор на основе имени вашего приложения, который будет применяться к регистраторам, созданным с logging.getLogger(__name__) в любом модуле внутри этого приложения.Например, если ваше приложение называется myapp:

'myapp': {  # Will apply to myapp/views.py, myapp/models.py etc.
    'handlers': ['file'],
    'level': 'DEBUG',
    'propagate': True,
}

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

'': {
    'handlers': ['file'],
    'level': 'ERROR',
}

Итак, все вместе:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': 'logging.txt',
        },
    },
    'loggers': {
        'django': {  # Logger for Django framework code
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
        },
        'myapp': {  # Specific logger for your app
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
        },
        '': {  # Catchall root logger
            'handlers': ['file'],
            'level': 'ERROR',
        },
    },
}
...