No aplicativo python-getting-started , para um log que não está marcado como django
, ERROR
logs de nível aparecem em heroku
logs, mas INFO
logs não.
Para fazer com que funcione para os registros que não foram marcados com django
, ele precisa de uma configuração como a seguinte (semelhante à sua):
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console': {
'class': 'logging.StreamHandler',
},
},
'loggers': {
'': {
'handlers': ['console'],
'level': 'INFO',
},
'django': {
'handlers': ['console'],
'level': 'INFO',
},
},
}
Portanto, se você ajustar sua configuração para ser semelhante ao python-getting-started, incluindo o Procfile, esperamos que funcione.
Aqui está um log que não está marcado como django, que adicionei a 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')
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, a informação e os logs de erro apareceram. Isso é tudo com DEBUG = False
(alterado do código no repo, que tem DEBUG = True
).
Provavelmente, é melhor, em vez de ter a cadeia de caracteres vazia, para que tudo seja registrado, para ter entradas mais específicas de loggers
do que apenas a cadeia vazia ( ''
).
Finalmente, em seu arquivo de log, há um caso em que os logs INFO não aparecerão no console ou os logs do Heroku: se for um log INFO para django.request
, com sua configuração, ele irá para 'mail_admins'
porque propagate
é False
. Acho que nesse caso, faria mais sentido que propagate
fosse definido como True
.