如何强制Spring Boot输出带ANSI颜色日志到文件及彩色查看工具?
问题解答
1. 强制Spring Boot日志重定向到文件时保留ANSI颜色代码
Spring Boot默认用Logback作为日志框架,它会自动检测输出目标是否为终端,重定向到文件时会关闭颜色输出。要强制保留ANSI代码,有两种常用方式:
方式一:通过系统参数配置
在启动命令中添加-Dlogback.color.output=always参数,强制Logback始终输出颜色代码。修改后的命令如下:
mvn -Dstyle.color=always \ -Dspring.output.ansi.enabled=always \ -Dlogback.color.output=always \ -Dspring-boot.run.profiles=local \ spring-boot:run > "${log_file}" 2>&1 &
方式二:修改配置文件
在application-local.properties(对应local环境)中自定义日志格式,给每个%clr标记添加always属性,强制启用颜色:
logging.pattern.console=%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint,always} %clr(%5p){always} %clr(${PID:- }){magenta,always} %clr(---){faint,always} %clr([%15.15t]){faint,always} %clr(%-40.40logger{39}){cyan,always} %clr(:){faint,always} %m%n%wEx
2. 跟踪日志文件并渲染颜色的工具
以下工具可以替代tail -f,并正确解析ANSI颜色代码:
- less:终端自带工具,使用
less +F ${log_file}(+F等价于实时跟踪),默认支持渲染颜色。按Ctrl+C退出跟踪模式,再按F可恢复。 - multitail:支持多日志文件同时跟踪,自动识别ANSI颜色,安装后直接运行
multitail ${log_file}即可。 - ccze:专门的日志着色工具,能识别多种日志格式,运行
tail -f ${log_file} | ccze即可看到着色后的日志。 - grc:通用着色工具,安装后运行
tail -f ${log_file} | grc cat即可,默认对Spring Boot日志有适配。
内容的提问来源于stack exchange,提问作者Romstar
相关产品推荐
相关产品推荐

