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

Python日志未在Google Dataflow中显示问题求助

Google Dataflow Python日志不显示排查指南
  • 补全日志记录器配置
    只设置日志级别不够,自定义logger默认没有绑定输出Handler,导致日志无法被Worker捕获。可以添加StreamHandler并做防重复配置:

    import logging
    logger = logging.getLogger('TEST_LOGGER')
    logger.setLevel(logging.INFO)
    # 避免重复添加Handler
    if not logger.handlers:
        handler = logging.StreamHandler()
        formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
        handler.setFormatter(formatter)
        logger.addHandler(handler)
    
  • 确认日志执行上下文
    如果check_file_size是在Driver进程(本地提交作业的进程)执行,日志只会出现在本地终端,不会同步到Dataflow UI。要确保函数是作为PTransform的一部分(比如ParDo、Map操作)在Worker端执行。可以在Driver和Worker分别打日志,区分输出位置。

  • 检查UI日志筛选规则
    进入Dataflow作业详情页,确认日志筛选条件是否正确:默认可能只显示WARNING及以上级别,需要手动切换到INFO级别;同时要确保筛选器包含自定义logger名称TEST_LOGGER。另外检查项目Cloud Logging是否有排除规则过滤了目标日志。

  • 验证print语句的捕获逻辑
    Dataflow Worker默认捕获stdout/stderr,但特殊上下文(比如子进程)的print可能无法被捕获。优先用logging代替print;如果必须用print,可以尝试重定向输出到logging:

    import sys
    logging.basicConfig(stream=sys.stdout, level=logging.INFO)
    
  • 排查异常记录情况
    如果异常被内部捕获未向上抛出,UI可能不会显示。抛出异常时同时用logger.error记录,或者确保异常导致Worker进程报错,这样会出现在作业的错误日志中。另外查看作业的「Failed Workers」或「Errors」标签页,确认是否有未被捕获的异常记录。

  • 核对依赖与运行时兼容性
    避免使用会修改全局logging配置的第三方包,尽量用标准库logging模块。同时检查Dataflow SDK版本,优先使用稳定版,旧版本可能存在日志捕获bug。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 17:35:24