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',
},
},
}
따라서 Procfile을 포함하여 python-getting-started와 다르게 구성을 조정하면 잘 작동합니다.
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
repo의 코드에서 변경됨 DEBUG = True
)입니다.
빈 문자열 키를 사용하는 것보다는 빈 문자열 키보다 더 구체적인 loggers
항목 을 갖는 것이 ''
좋습니다.
마지막으로, 로그 파일에이 정보 로그가 콘솔에 표시되지 않습니다 경우, 또는에게 Heroku는 로그 : 그것은에 대한 정보 로그 있다면 django.request
그것은 단지로 이동됩니다 설정과 함께 'mail_admins'
하기 때문 propagate
입니다 False
. 이 경우에는 propagate
로 설정하는 것이 더 의미가 있다고 생각합니다 True
.