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

Apache OpenWhisk Python Zip动作日志输出异常求助

Apache OpenWhisk Python动作日志不显示的解决方案

问题原因

OpenWhisk的Python运行时仅捕获动作执行过程中stdout和stderr的输出内容作为日志返回。你的代码存在两个关键问题:

  1. logging.basicConfig未显式指定输出流,导致日志未写入OpenWhisk监控的流中;
  2. print语句默认使用缓冲输出,内容未被及时刷新,无法被OpenWhisk捕获。

修复方案

1. 修正logging配置

显式将日志输出定向到sys.stderr或sys.stdout(两者都会被OpenWhisk收集):

import logging
import sys
import dotenv

dotenv.load_dotenv()
logging.basicConfig(
    level="INFO",
    format='%(asctime)s - %(name)s - %(levelname)s - %(threadName)s - %(message)s',
    stream=sys.stderr  # 指定输出到stderr,OpenWhisk会捕获该流内容
)
logger = logging.getLogger(__name__)
opensearch_logger = logging.getLogger("opensearch")
opensearch_logger.setLevel(logging.WARNING)

def handler(event):
    logger.info(f"Some logging statement.")
    return {"func": "fin"}

2. 修复print语句

添加flush=True强制刷新输出缓冲区,确保内容被立即写入stdout:

def handler(event):
    print("This is a print statement", flush=True)
    return {"func": "fin"}

验证说明

修改后重新部署并执行动作,日志内容会出现在返回结果的logs数组中。你的动作配置中日志限制(logs:10)足够容纳输出,无需调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 12:47:19