如何解决Fargate如何将uWSGI和Django日志从容器发送到Cloudwatch
我让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 举报,一经查实,本站将立刻删除。