Не наблюдение Django входит в систему Heroku

Я не вижу записи в журнале (на уровне INFO) сделанный Django в моих журналах Heroku.

Это - моя конфигурация:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse',
        },
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
        'not_development_filter': {
            '()': NotDevelopmentFilter,
        },
    },
    'handlers': {
        'console':{
            'level': 'INFO',
            'class': 'logging.StreamHandler',
        },
        'null': {
            'class': 'django.utils.log.NullHandler',
        },
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['not_development_filter'],
            'class': 'django.utils.log.AdminEmailHandler',
            'include_html': True,
        }
    },
    'loggers': {
        '': {
            'handlers': ['mail_admins', 'console'],
            'level': 'INFO',
        },
        'django': {
            'handlers': ['console'],
        },
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': False,
        },
        'py.warnings': {
            'handlers': ['console'],
        },
    }
}

Я хотел бы видеть записи в журнале в интерфейсе Heroku. Какая-либо идея, почему я не вижу их там?

14
задан 11 August 2014 в 23:08
2 ответа

В начало работы с питоном , для журнала без тегов django , ERROR журналы уровня отображаются в журналах heroku , но журналы INFO Не делайте этого.

Чтобы он работал с журналами, не имеющими тегов django , ему нужна следующая конфигурация (похожая на вашу):

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
        },
    },
    'loggers': {
        '': {
            'handlers': ['console'],
            'level': 'INFO',
        },
        'django': {
            'handlers': ['console'],
            'level': 'INFO',
        },
    },
}

Итак, если вы измените свою конфигурацию на другое похоже на начало работы с python, включая Procfile, надеюсь, он сработает.

Вот журнал без тега django, который я добавил в views / hello.py :

import logging
logger = logging.getLogger(__name__)

# Create your views here.
def index(request):
    logger.error('testing logging!')
    logger.info('testing info logging')
    logger.debug('testing debug logging')

    # return HttpResponse('Hello from Python!')
    return render(request, 'index.html')

Когда Сначала попробовал, только журнал ошибок обнаружился. Когда я добавил конфигурацию ведения журнала в фрагмент кода над предыдущим, появилась информация и журналы ошибок. Это все с DEBUG = False (изменено с кода в репо, который имеет DEBUG = True ).

Вероятно, лучше, чем иметь пустую строку ключ, поэтому все регистрируется, чтобы иметь более конкретные записи регистраторы , чем просто пустая строка ( '' ).

Наконец, в вашем файле журнала есть случай, когда Журналы INFO не будут отображаться на консоли или журналы Heroku: если это журнал INFO для django.request , с вашей конфигурацией он будет идти только в 'mail_admins' , потому что ] распространять равно Ложь . Я думаю, что в этом случае для spread было бы разумнее установить значение True .

1
ответ дан 2 December 2019 в 21:14

У меня было то же самое, что уровень INFO не отображается, но в моем случае (и как сообщает @Benjamin Atkin) ERROR сделал .

Основная проблема, похоже, заключается в том, что этот вызов:

django_heroku.settings(locals())

удаляет любые пользовательские регистраторы, которые вы могли настроить в своем LOGGING dict.

Решение состоит в том, чтобы добавить это к вызову, чтобы это не мешало вашей настройке ведения журнала:

django_heroku.settings(locals(), logging=False)

Или, еще лучше, не используйте его вообще, так как этот пакет в любом случае устарел.

1
ответ дан 7 March 2020 в 21:56

Теги

Похожие вопросы