Розташування журналів і помилок Django


77

Я встановив сервер django за допомогою nginx, і на деяких сторінках він отримує помилку 403.

Де я можу знайти журнали django? де я можу детально побачити помилки?


Що ви запускаєте між nginx та Django? рушниця? Ви використовуєте супервайзер?
Джозеф

Ви встановили DEBUG = True у своєму файлі settings.py? Якщо так, то у випадку, якщо помилки виглядають як i.imgur.com/TWL6f.png , то це, мабуть, проблема django. Якщо помилка 403 не є багатослівним повідомленням, то, я гадаю, це проблема nginx. Якщо це проблема з Django, запустіть свій django-сервер за допомогою консолі та перейдіть на сторінку, яка повідомляє про помилку. Сподіваємось, результатів консолі буде достатньо для того, щоб з’ясувати вашу проблему.
user1876508

Відповіді:


76

Журнали встановлюються у вашому settings.pyфайлі. Новий проект за замовчуванням виглядає так:

# A sample logging configuration. The only tangible logging
# performed by this configuration is to send an email to
# the site admins on every HTTP 500 error when DEBUG=False.
# See http://docs.djangoproject.com/en/dev/topics/logging for
# more details on how to customize your logging configuration.
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse'
        }
    },
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['require_debug_false'],
            'class': 'django.utils.log.AdminEmailHandler'
        }
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True,
        },
    }
}

За замовчуванням вони не створюють файли журналів. Якщо ви хочете їх, вам потрібно додати filenameпараметр до вашогоhandlers

    'applogfile': {
        'level':'DEBUG',
        'class':'logging.handlers.RotatingFileHandler',
        'filename': os.path.join(DJANGO_ROOT, 'APPNAME.log'),
        'maxBytes': 1024*1024*15, # 15MB
        'backupCount': 10,
    },

Це дозволить створити обертовий журнал розміром 15 МБ та зберегти 10 історичних версій.

У loggersрозділі зверху вам потрібно додати applogfileдо handlersзаявки

'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True,
        },
        'APPNAME': {
            'handlers': ['applogfile',],
            'level': 'DEBUG',
        },
    }

Цей приклад помістить ваші журнали у ваш корінь Django у файл із іменем APPNAME.log


4
робити logger = logging.getLogger('APPNAME') в цьому випадку
Боб Йоплайт

Ви повинні додати цей рядок до кожногоviews.py
Башдль,

32

Додайте до свого settings.py:

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

І він створить файл, який називається debug.logв кореневій папці вашого. https://docs.djangoproject.com/en/1.10/topics/logging/


6
На Apache2 wsgi спробує створити файл у /var/www/debug.log. Це створить 2 окремі файли, якщо ваш проект Django знаходиться поза /var/www/директорією. Будь ласка, використовуйте 'filename': os.path.join(BASE_DIR, 'debug.log'),замість цього.
Сурадж

Прийнята відповідь у мене не спрацювала. Це працює на Django 2!
caravana_942

Я використовую django 3.1, і я отримую Internal Server Error. будь-яке нове рішення?
Шахріар. М.

11

Налаштування https://docs.djangoproject.com/en/dev/topics/logging/ і тоді ці помилки відлунять там, куди ви їх вкажете. За замовчуванням вони, як правило, знищуються в бур’янах, тому я завжди починаю з гарного налаштування лісозаготівлі перед будь-чим іншим.

Ось справді хороший приклад для базового налаштування: https://ian.pizza/b/2013/04/16/getting-started-with-django-logging-in-5-minutes/

Редагувати: нове посилання переміщено за адресою : https://github.com/ianalexander/ianalexander/blob/master/content/blog/getting-started-with-django-logging-in-5-minutes.html


1
Зверніть увагу , що Ян перейменував його домен ian.pizza, так ось фактична посилання: ian.pizza/b/2013/04/16 / ...
Jan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.