You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置FastAPI将日志发布到CloudWatch?Lambda日志缺失解决

FastAPI部署到AWS Lambda后日志不显示在CloudWatch的解决方案

核心问题分析

Lambda通过捕获stdout和stderr输出内容到CloudWatch,你的日志在Lambda环境中无法显示,大概率是以下原因导致:

  • FastAPI依赖的Uvicorn日志未正确输出到标准输出
  • logging.basicConfig与logging.conf配置冲突,日志处理器未正确关联
  • 日志配置加载时机错误,Lambda初始化阶段未完成日志配置

具体解决步骤

1. 调整FastAPI日志输出(适配Uvicorn)

使用Mangum适配器部署FastAPI到Lambda时,需要强制将Uvicorn及业务日志输出到stdout。修改app.py的日志配置逻辑:

import logging
import sys
from fastapi import FastAPI
from mangum import Mangum

# 重置root logger,避免默认配置冲突
root_logger = logging.getLogger()
root_logger.setLevel(logging.INFO)
# 清除所有默认处理器
for handler in root_logger.handlers[:]:
    root_logger.removeHandler(handler)

# 添加指向stdout的StreamHandler
handler = logging.StreamHandler(sys.stdout)
log_format = "%(asctime)s %(levelname)s %(name)s %(message)s"
date_format = "%Y-%m-%d %H:%M:%S"
formatter = logging.Formatter(log_format, datefmt=date_format)
handler.setFormatter(formatter)
root_logger.addHandler(handler)

app = FastAPI()

# 示例路由,用于测试日志
@app.get("/")
async def root():
    logging.getLogger(__name__).info("Root endpoint accessed")
    return {"message": "Hello World"}

handler = Mangum(app)

2. 统一日志配置,消除冲突

  • 删除app.py中的logging.basicConfig调用,避免与logging.conf重复配置。
  • 如果继续使用logging.conf,确保在应用启动时正确加载,且保留现有日志器:
import logging.config

# 加载配置文件,disable_existing_loggers=False避免Uvicorn日志被禁用
logging.config.fileConfig('logging.conf', disable_existing_loggers=False)

注意:部署时要确保logging.conf文件包含在Lambda部署包内,路径正确。

3. 验证自定义日志输出

在业务代码中添加测试日志,确认输出逻辑正常:

LOG = logging.getLogger(__name__)

def process_feature_request():
    LOG.info("Processing feature request...")
    # 业务逻辑代码

4. 确认Lambda权限

检查Lambda执行角色是否拥有以下CloudWatch日志权限:

  • logs:CreateLogGroup
  • logs:CreateLogStream
  • logs:PutLogEvents
    默认Lambda执行角色已包含这些权限,若使用自定义角色需手动添加。

验证方法

部署修改后的代码到Lambda,触发请求后查看对应CloudWatch日志组:

  • 检查是否出现自定义业务日志
  • 检查是否出现Uvicorn生成的访问日志(如INFO: xxx - "GET / HTTP/1.1" 200 OK)

内容的提问来源于stack exchange,提问作者Istvan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 01:15:52