问题描述
我让Django在AWS Fargate的docker容器中的uWsgi后面运行。容器日志将发送到Cloudwatch。在我的设置中,如果uWsgi和Django都登录到stdout / stderr并且日志混杂在一起,我会没事的。在下面粘贴我的配置。
这是我的入口点。
#!/bin/bash
python manage.py collectstatic --noinput
python /code/manage.py migrate --noinput
exec uwsgi --show-config --log-master
我可以看到来自Django的collectstatic
和migrate
调用的正确日志输出。
DEBUG 2020-09-06 07:39:38,589 retryhandler 6 139721333720896 No retry needed.
这些很容易识别,因为它们以日志级别DEBUG
开始。
uWsgi进程一开始,我就停止看到来自Django的任何日志事件。我唯一看到的是uWsgi日志事件,例如:
[pid: 13|app: 0|req: 2/1] 10.0.2.249 () {30 vars in 352 bytes} [Sun Sep 6 07:39:46 2020] GET / => generated 3877 bytes in 444 msecs (HTTP/1.1 200) 4 headers in 128 bytes (1 switches on core 1)
在Dockerfile
中,我设置了3个其他与uWsgi相关的环境变量:
ENV UWsgi_Wsgi_FILE=sanctionsio/wsgi.py
ENV UWsgi_HTTP=:8000 UWsgi_MASTER=1 UWsgi_HTTP_AUTO_CHUNKED=1 UWsgi_HTTP_KEEPALIVE=1 UWsgi_LAZY_APPS=1 UWsgi_Wsgi_ENV_BEHAVIOR=holy
ENV UWsgi_WORKERS=2 UWsgi_THREADS=4
Django日志记录的设置如下:
LOGGING_LEVEL = 'DEBUG'
LOGGING = {
'version': 1,'disable_existing_loggers': True,'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},'simple': {
'format': '%(levelname)s %(module)s %(message)s'
},},'handlers': {
'console': {
'level': LOGGING_LEVEL,'class': 'logging.StreamHandler','formatter': 'verbose'
},'loggers': {
'': {
'level': LOGGING_LEVEL,'handlers': ['console',]
},'zeep': {
'level': 'INFO','handlers': ['console']
},}
我是否在uWsgi或Django方面都缺少任何东西,所以应用程序日志(Django)最终以stdout / stderr与wsgi日志混合在一起?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)