Je ne vois pas d'entrées de journal (à un niveau de INFO
) faites par Django dans mes journaux Heroku.
Voici ma configuration:
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'],
},
}
}
J'aimerais voir les entrées du journal dans l'interface Heroku. Une idée pourquoi je ne les vois pas là-bas?
print
quelque chosestdout
?Réponses:
Dans l'application python-getting-started , pour un journal qui n'est pas balisé
django
, lesERROR
journaux de niveau s'affichent dans lesheroku
journaux, mais pas lesINFO
journaux.Pour le faire fonctionner pour les journaux qui ne sont pas balisés
django
, il a besoin d'une configuration comme la suivante (similaire à la vôtre):Donc, si vous ajustez votre configuration pour qu'elle ressemble à python-getting-started, y compris le Procfile, cela devrait fonctionner.
Voici un journal qui n'est pas étiqueté django, que j'ai ajouté à
views/hello.py
:Lorsque je l'ai essayé pour la première fois, seul le journal des erreurs s'est affiché. Lorsque j'ai ajouté la configuration de journalisation dans l'extrait de code au-dessus de la précédente, les informations et les journaux d'erreurs sont apparus. C'est tout avec
DEBUG = False
(changé du code dans le repo, qui aDEBUG = True
).Il est probablement préférable, plutôt que d'avoir la clé de chaîne vide, que tout soit consigné, pour avoir des
loggers
entrées plus spécifiques que la chaîne vide (''
).Enfin, dans votre fichier journal, il y a un cas où les journaux INFO n'apparaissent sur la console, ou les journaux Heroku: Si c'est un journal INFO pour
django.request
, avec votre config il ne sera à'mail_admins'
causepropagate
estFalse
. Je pense que dans ce cas, il serait plus logiquepropagate
d'être réglé surTrue
.la source