Apache OpenWhisk Python Zip动作日志输出异常求助
Apache OpenWhisk Python动作日志不显示的解决方案
问题原因
OpenWhisk的Python运行时仅捕获动作执行过程中stdout和stderr的输出内容作为日志返回。你的代码存在两个关键问题:
logging.basicConfig未显式指定输出流,导致日志未写入OpenWhisk监控的流中;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
相关产品推荐
相关产品推荐

