Não estou vendo entradas de log (no nível de INFO
) feitas pelo Django em meus logs do Heroku.
Esta é a minha configuração:
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'],
},
}
}
Eu gostaria de ver as entradas de log na interface Heroku. Alguma idéia de por que não os vejo lá?
print
algostdout
?Respostas:
No aplicativo de introdução ao python , para um log que não está marcado
django
, osERROR
logs de nível são exibidos nosheroku
logs, mas osINFO
logs não.Para fazê-lo funcionar para logs que não são marcados
django
, ele precisa de uma configuração como a seguinte (semelhante à sua):Portanto, se você ajustar sua configuração para que ela seja como a introdução ao python, incluindo o Procfile, esperamos que funcione.
Aqui está um log que não está marcado como django, que eu adicionei a
views/hello.py
:Quando tentei pela primeira vez, apenas o log de erros apareceu. Quando adicionei a configuração de log no snippet de código acima do anterior, as informações e os logs de erro apareceram. Isso é tudo com
DEBUG = False
(alterado do código no repo, que possuiDEBUG = True
).Provavelmente é melhor, em vez de ter a chave de cadeia vazia, para que tudo seja registrado, para ter
loggers
entradas mais específicas do que apenas a cadeia vazia (''
).Finalmente, no seu arquivo de log, há um caso em que os registros INFO não aparecem no console ou o Heroku: Se for um registro INFO
django.request
, com a sua configuração, ele irá somente'mail_admins'
porquepropagate
éFalse
. Eu acho que, nesse caso, faria mais sentidopropagate
ser definido comoTrue
.fonte