Я не вижу записи в журнале (на уровне 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. Какая-либо идея, почему я не вижу их там?
В начало работы с питоном , для журнала без тегов 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
.
У меня было то же самое, что уровень INFO
не отображается, но в моем случае (и как сообщает @Benjamin Atkin) ERROR
сделал .
Основная проблема, похоже, заключается в том, что этот вызов:
django_heroku.settings(locals())
удаляет любые пользовательские регистраторы, которые вы могли настроить в своем LOGGING
dict.
Решение состоит в том, чтобы добавить это к вызову, чтобы это не мешало вашей настройке ведения журнала:
django_heroku.settings(locals(), logging=False)
Или, еще лучше, не используйте его вообще, так как этот пакет в любом случае устарел.