Google App Engine 禁用请求日志及过滤日志垃圾信息的可行方案咨询
Django GAE 日志过滤方案
7年前的旧回答已经过时,当前GAE标准/灵活环境均已支持原生配置实现请求日志过滤,具体方案如下:
原生配置实现方案
- GAE灵活环境
- 在
app.yaml中添加配置,关闭GAE默认的sidecar请求日志采集:
runtime_config: python: skip_logging_config: true- 调整原有的Django日志配置,添加
propagate: False避免日志向上传递被重复采集,调整后配置如下:
'loggers': { 'django': { 'handlers': ['console'], 'level': 'WARNING', 'propagate': False }, 'google.cloud.logging': { 'level': 'WARNING' } } - 在
- GAE标准环境
在settings.py中添加配置关闭默认日志中间件:
配置完成后你原有设置的WARNING级日志过滤规则即可正常生效。APPENGINE_AUTO_ADD_LOGGING_MIDDLEWARE = False
日志解析器替代方案
如果因业务限制无法修改GAE环境配置,可以使用以下工具实现日志过滤:
- gcloud命令内置过滤:拉取线上日志时直接添加级别过滤参数,仅输出WARNING及以上级别的日志,命令如下:
gcloud logging read "severity>=WARNING AND resource.type=gae_app" --format="value(textPayload)" - 本地轻量过滤脚本:你可以自行编写极简Python脚本处理本地调试输出,核心逻辑如下:
使用时直接通过管道传递日志输出即可:import sys for line in sys.stdin: if "WARNING" in line or "ERROR" in line or "CRITICAL" in line: print(line.strip())python manage.py runserver | python log_filter.py
内容的提问来源于stack exchange,提问作者Arch
相关产品推荐
相关产品推荐

