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

Cloud Composer 3升级后Airflow日志换行显示为\n问题求助

GCP Cloud Composer 3(Airflow 2.10.2-build.5)多行日志显示为单行的解决配置方案

升级至Cloud Composer 3及Airflow 2.10.2-build.5版本后,日志中的换行符\n被直接显示为文本而非解析成实际换行,所有多行日志内容被压缩为单行,示例:

INFO - \n print: This is a print\n Multiline\n To see how it appears\n

以下是针对该问题的配置修复方案:

方案一:调整Airflow默认日志格式

在Cloud Composer环境的Airflow配置中添加以下配置项:

  • 配置键:logging.format
  • 配置值:%(asctime)s - %(name)s - %(levelname)s - %(message)s

该配置会覆盖默认的日志格式化规则,确保日志消息中的换行符被正确解析,而非转义为文本显示。

方案二:自定义日志配置类(适用于方案一不生效的场景)

  1. 创建自定义日志配置脚本custom_logging_config.py,内容如下:
from airflow.config_templates.airflow_local_settings import DEFAULT_LOGGING_CONFIG

def get_custom_logging_config():
    config = DEFAULT_LOGGING_CONFIG.copy()
    # 替换默认格式化器,确保消息不被转义
    for handler_name, handler in config['handlers'].items():
        if handler.get('formatter') == 'airflow':
            handler['formatter'] = 'custom_airflow'
    # 定义自定义格式化器
    config['formatters']['custom_airflow'] = {
        'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s',
        'class': 'logging.Formatter'
    }
    return config
  1. 将该脚本上传至Cloud Composer的DAG存储桶(如gs://{your-composer-bucket}/dags/路径)
  2. 在Cloud Composer的Airflow配置中添加:
    • 配置键:logging.config_class
    • 配置值:custom_logging_config.get_custom_logging_config

补充说明

Cloud Composer 3默认集成Cloud Logging,需确保Cloud Logging处理器未对日志消息进行转义。若使用Cloud Logging专属配置,需保证json_fields中的message字段直接映射原始日志内容,不做转义处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:52:38