Spring Cloud 使用 log4j2 的各种坑

本文详细介绍了如何在SpringBoot项目中排除默认的日志框架并引入Log4j2,实现日志的灵活配置。通过添加log4j2依赖及配置文件,实现了日志级别的控制、TraceId的打印,并解决了log4j2.xml文件路径的配置问题。
摘要由CSDN通过智能技术生成

已经连续46天没有写文章了,主要是最近忙着折腾 Spring Cloud 。后续在下会持续发布一些关于 Spring Cloud 相关的文章。今天记录一些关于 log4j2 的坑。

配置 log4j2

pom.xml 需要把自带的 logging 剔除掉,然后加上 log4j2 的依赖。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>

之后就是加上 log4j2.xml ,这个应该网上找得到很多。

TraceId 的打印

在 pom.xml 文件里加上 spring-cloud-starter-sleuth 的依赖,就可以在日志里打出TraceId,标记每一次请求打出的日志。

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-sleuth</artifactId>
        </dependency>

logback 是直接可以在日志里看到TraceId,无需多余的配置;但是 log4j2 就需要额外配置一下了;印象中是在GitHub 上翻到的答案。(有点运气性)

<PatternLayout pattern="[%d{yyy-MM-dd HH:mm:ss:SSS}] [%X{X-B3-TraceId},%X{X-B3-SpanId},%X{X-B3-ParentSpanId},%X{X-Span-Export}] [%p] - %l - %m%n"/>

敲黑板!!划重点!!重要的事说三遍!!

[%X{X-B3-TraceId},%X{X-B3-SpanId},%X{X-B3-ParentSpanId},%X{X-Span-Export}]
[%X{X-B3-TraceId},%X{X-B3-SpanId},%X{X-B3-ParentSpanId},%X{X-Span-Export}]
[%X{X-B3-TraceId},%X{X-B3-SpanId},%X{X-B3-ParentSpanId},%X{X-Span-Export}]

log4j2.xml 文件路径问题

这个首先描述清楚:是 log4j2.xml 这个文件的路径,大部分 blog 都是直接写放在resources目录下,这很明显很痛苦。因为resources目录打成 jar 包时会打进去,如果你在日志输出路径直接写线上的文件路径的话,运维就不开心了:“我想自己配置日志输出路径。”。同时意味着你本机调试的时候,日志可能会打到很奇怪的目录去,自己也不开心,所以配置文件可配势在必行。
一开始没找到比较好的解决方案,因为搜 log4j2 配置文件路径总是会被当做日志输出路径,而且所有介绍log4j2的都是说放在resources目录下,正确的搜索姿势是:“.xml 文件路径 log4j2”。
然后找到的第一个解决方案是:

java -Dlog4j.configurationFile=path/to/log4j2.xml -jar xxxx.jar

但是我真的失败了,可能是不匹配 log4j2 吧。
然后在 GitHub 上找到了第二个解决方案:

# application.properties 配置文件
logging.config=path/to/log4j2.xml

加上配置就可以!超简单!世界瞬间美好了很多!(虽然前三行日志还不太和谐)

结束语

路漫漫其修远兮,好好加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值