Я не вижу записей журнала (на уровне 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. Есть идеи, почему я их там не вижу?
в python-начало работы app, для журнала без тегов 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
).
Вероятно, лучше иметь ключ пустой строки, чтобы все регистрировалось, чтобы иметь более конкретный loggers
записи, чем просто пустая строка (''
).
Наконец, в вашем файле журнала есть случай, когда журналы INFO не отображаются на консоли, или журналы Heroku: если это журнал INFO для django.request
, с вашей конфигурацией он пойдет только в 'mail_admins'
так как propagate
является False
. Я думаю, что в этом случае было бы больше смысла propagate
быть установлен на True
.
У меня было то же самое что INFO
уровень не отображается, но в моем случае (и, как сообщает @Benjamin Atkin) ERROR
сделал.
Основная проблема заключается в том, что этот вызов:
django_heroku.settings(locals())
удаляет любые пользовательские регистраторы, которые вы могли настроить в своем LOGGING
дикт.
Решение состоит в том, чтобы добавить это к вызову, чтобы он не мешал вашей настройке ведения журнала:
django_heroku.settings(locals(), logging=False)
Или, еще лучше, не используйте его вообще, поскольку этот пакет в любом случае устарел.