Spring Cloud 使用 log4j2 的各种坑

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Koprvhdix/article/details/82801744

已经连续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

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

结束语

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

猜你喜欢

转载自blog.csdn.net/Koprvhdix/article/details/82801744