Я создал приложение на Heroku, и я нажимаю на него приложение Django.
Я отслеживаю журналы с помощью heroku logs --tail
, чтобы видеть их в режиме реального времени.
Затем в моем settings.py
у меня есть следующее:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': ('%(asctime)s [%(process)d] [%(levelname)s] ' +
'pathname=%(pathname)s lineno=%(lineno)s ' +
'funcname=%(funcName)s %(message)s'),
'datefmt': '%Y-%m-%d %H:%M:%S'
},
'simple': {
'format': '%(levelname)s %(message)s'
}
},
'handlers': {
'null': {
'level': 'DEBUG',
'class': 'logging.NullHandler',
},
'console': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'verbose',
'stream': sys.stdout,
}
},
'loggers': {
'MYAPP': {
'handlers': ['console'],
'level': 'INFO',
}
}
}
Затем, когда я хочу что-то записать, я использую следующее:
import logging
import sys
logger = logging.getLogger('MYAPP')
logger.info('My message here...')
sys.stdout.flush()
но это не отражено в моих журналах.
Мой Procfile
:
web: gunicorn myapp.wsgi --log-file=-
EDIT: Любопытно, что я могу изменить "myapp" на "django", когда я определяю конфигурацию журнала, а также logging.getLogger('django')
, и это позволяет мне видеть что-либо, используя print
в моих журналах, но ничего из отформатированного регистратора Я определил.
У меня даже есть PYTHONUNBUFFERED=true
и DEBUG=1
для моей промежуточной среды, но я не вижу ни одного из журналов, которые я вижу при использовании моей локальной версии с foreman start web
.
Что вызывает это и как я вижу, что мои журналы живут в Heroku?