如何精简Terragrunt控制台冗余输出,仅保留错误信息?
Terragrunt 冗余日志过滤实现方法
原生内置最简方案
Terragrunt 本身提供日志级别控制能力,要实现控制台仅保留报错信息,直接通过--log-level参数将日志输出粒度限制为错误级即可:
- 单次执行时追加参数的写法示例:
terragrunt run-all apply --log-level error - 不想每次手动追加参数的场景,可将配置固化到环境变量
TERRAGRUNT_LOG_LEVEL,赋值为error,后续所有Terragrunt执行动作都会默认遵循该日志规则,无需重复传参。
该级别的过滤效果会直接屏蔽所有非错误类的常规提示,覆盖两类典型冗余输出:模块缓存目录设置提示、模块依赖等待提示,仅在出现配置语法错误、依赖拉取失败、执行流程中断这类异常时才会在控制台打印内容。
定向过滤特定冗余行的自定义方案
如果不需要全局屏蔽所有非错误日志,只想精准过滤上述两类固定格式的提示行、同时保留其他必要的执行进度日志,可以配合系统自带的文本过滤工具做管道过滤:
- Linux/macOS 类Unix环境,可通过
grep -v反向匹配剔除目标冗余行,示例命令:terragrunt run-all apply 2>&1 | grep -v -E "(Setting download directory for module|must wait for .* dependencies to finish)" - Windows PowerShell环境,可通过
Select-String实现反向匹配过滤,示例命令:terragrunt run-all apply 2>&1 | Select-String -NotMatch -Pattern "Setting download directory for module","must wait for .* dependencies to finish"
注意:使用管道过滤时建议开启shell的管道错误透传机制(如bash环境下执行set -o pipefail),避免管道环节吞掉Terragrunt执行的真实非零退出码,导致上层脚本误判执行结果。
内容的提问来源于stack exchange,提问作者Snowcrash
相关产品推荐
相关产品推荐

