lol*_*ter 14 python django logging heroku
我在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',
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,当我想记录某些内容时,我使用以下内容:
import logging
import sys
logger = logging.getLogger('MYAPP')
logger.info('My message here...')
sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)
但它没有反映在我的日志中.
我的Procfile:
web: gunicorn myapp.wsgi --log-file=-
Run Code Online (Sandbox Code Playgroud)
编辑:奇怪的是,当我定义我的日志配置时,我实际上可以将"myapp"更改为"django",这也logging.getLogger('django')允许我print在日志中查看任何内容,但是我已经定义的格式化记录器中没有任何内容.
我甚PYTHONUNBUFFERED=true至DEBUG=1设置了我的暂存环境,但是我没有看到使用本地版本时看到的任何日志foreman start web.
造成这种情况的原因是什么?如何在Heroku中查看我的日志?
你的Procfile可能有问题:
如果你想让gunicorn登录到stdout你必须使用--logfile=-命令行选项(你错过了=!)根据这个答案.
所以你的整个Procfile应该是这样的:
web: gunicorn myapp.wsgi --log-file=-
编辑:
由于print语句适合您,但日志记录不适用,因此您的日志记录设置可能有问题.确保在应用程序启动期间设置日志记录(您在代码中调用dictConfig的位置是什么?):
import logging
logging.config.dictConfig(LOGGING)
logger = logging.getLogger('MYAPP')
logger.info("Just testing")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3108 次 |
| 最近记录: |