Nie widzę wpisów dziennika (na poziomie INFO
) wykonanych przez Django w moich dziennikach Heroku.
Oto moja konfiguracja:
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'],
},
}
}
Chciałbym zobaczyć wpisy dziennika w interfejsie Heroku. Wiesz, dlaczego ich tam nie widzę?
print
coś chceszstdout
?Odpowiedzi:
W aplikacji uruchamiającej Pythona dla dziennika, który nie jest oznaczony
django
,ERROR
dzienniki poziomu są wyświetlane wheroku
dziennikach, aleINFO
dzienniki nie.Aby działał w przypadku dzienników, które nie są oznaczone
django
, potrzebuje konfiguracji podobnej do poniższej (podobnej do twojej):Więc jeśli dostosujesz swoją konfigurację tak, aby wyglądała jak rozpoczęcie pracy z Pythonem, w tym plik Procfile, powinna mieć nadzieję, że zadziała.
Oto dziennik, który nie jest oznaczony jako django, który dodałem do
views/hello.py
:Kiedy po raz pierwszy spróbowałem, pojawił się tylko dziennik błędów. Kiedy dodałem konfigurację rejestrowania we fragmencie kodu powyżej poprzedniego, pojawiły się informacje i dzienniki błędów. To wszystko z
DEBUG = False
(zmienione z kodu w repozytorium, który maDEBUG = True
).Prawdopodobnie lepiej jest mieć niż pusty klucz ciągu, więc wszystko jest rejestrowane, aby mieć bardziej szczegółowe
loggers
wpisy niż tylko pusty ciąg (''
).Wreszcie, w twoim pliku dziennika jest przypadek, w którym dzienniki INFO nie pojawią się na konsoli lub dzienniki Heroku: Jeśli jest to dziennik INFO do
django.request
, z twoją konfiguracją pójdzie tylko'mail_admins'
dlatego, żepropagate
jestFalse
. Myślę, że w tym przypadku, to więcej sensu dlapropagate
zostać ustawionyTrue
.źródło