如何让Azure API管理自托管网关日志不含终端控制字符?
解决Azure API管理自托管网关日志中的ANSI控制字符问题
以下是几种可行的解决方案:
禁用终端颜色输出(推荐)
在AWS ECS的容器定义中添加环境变量TERM=dumb,让网关容器识别当前终端不支持ANSI颜色,从而停止输出首尾的控制字符。无需修改网关核心配置,操作简单直接。修改APIM网关日志配置
除已配置的telemetry.logs.std=json外,额外添加配置项telemetry.logs.color=false。可以通过环境变量传递(例如APIM_TELEMETRY_LOGS_COLOR=false,具体变量前缀需匹配网关的环境变量规则),或在网关的配置文件中明确禁用日志着色功能。容器启动时过滤日志内容
如果前两种方法无效,可在容器启动命令中通过管道工具过滤掉ANSI控制字符。将启动命令修改为:sh -c "网关实际启动命令 | sed 's/\x1b\[[0-9;]*m//g'"替换其中的“网关实际启动命令”为你的自托管网关启动指令,sed命令会自动移除所有ANSI颜色控制序列,确保Cloudwatch中捕获的日志为纯净JSON格式。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

