Pav*_*sev 15 python django logging gunicorn
我正在用gunicorn运行django应用程序,我看不到任何我正在编写的日志消息.
以下是编写日志的代码:
logger = logging.getLogger(__name__)
def home_page(request):
logger.warning('in home page')
Run Code Online (Sandbox Code Playgroud)
(注意:此代码肯定会运行,因为这是一个通向主页的视图)
这是来自settings.py的日志配置:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'stream': sys.stdout,
},
},
'loggers': {
'django': {
'handlers': ['console'],
},
},
'root': {'level': 'INFO'},
}
Run Code Online (Sandbox Code Playgroud)
我用以下参数运行gunicorn作为守护进程:
--access-logfile ../access.log --error-logfile --log-level debug ../error.log
Run Code Online (Sandbox Code Playgroud)
access.log和error.log都创建并填充了gunicorn消息,但我看不到我写的消息.
谢谢
Pav*_*sev 22
我已经解决了我的问题.提供详细信息,以便它可以帮助有类似问题的人.
决定不与gunicorn和django日志混淆并为django创建单独的日志文件.
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
},
'logfile': {
'level':'DEBUG',
'class':'logging.FileHandler',
'filename': BASE_DIR + "/../logfile",
},
},
'root': {
'level': 'INFO',
'handlers': ['console', 'logfile']
},
}
Run Code Online (Sandbox Code Playgroud)
使用此配置,使用severity> = INFO写入的每条消息都将写入位于源目录外部的文件"logfile".
我想为此添加 2021 年的答案,因为服务器日志非常有用,如果不合并几个不同的示例,我就找不到我正在寻找的答案。我在 Heroku 上托管的 Dockerized 应用程序中使用 django==3.1 和 Gunicorn==20.0.4。我只是希望当我运行 docker-compose up 时,我的 Django 服务器日志能够显示在本地标准输出中,以及 Heroku 上的 papertrail 日志中。这对我有用。
# In Dockerfile, I created a location for the logs,
# and point there when starting gunicorn
RUN mkdir /logs
CMD gunicorn app.wsgi:application --bind 0.0.0.0:$PORT --workers 3 --capture-output --access-logfile /logs/gunicorn-access.log
Run Code Online (Sandbox Code Playgroud)
然后在 Django 设置中,我将其用于logging_dict:
import logging.config
# Clear prev config
LOGGING_CONFIG = None
logging.config.dictConfig({
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'console': {
'format': '%(message)s',
},
},
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'formatter': 'console',
},
},
'loggers': {
'gunicorn': { # this was what I was missing, I kept using django and not seeing any server logs
'level': 'INFO',
'handlers': ['console'],
'propagate': True,
},
},
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7581 次 |
| 最近记录: |