如何将 log4j2 与 spring boot 执行器一起使用
Posted
技术标签:
【中文标题】如何将 log4j2 与 spring boot 执行器一起使用【英文标题】:How to use log4j2 with spring boot actuators 【发布时间】:2019-11-14 00:05:33 【问题描述】:我正在尝试将 log4j2 中的日志提供给 Spring boot 执行器。不幸的是,我只实现了如何更改 ROOT 记录器的日志级别。也许有人知道如何将执行器与 log4j2 连接?
【问题讨论】:
【参考方案1】:我以另一种方式找到了解决方案。无论您如何配置 log4j2,因为 /logging 执行器中的 spring boot admin 读取日志文件。因此,我必须写入该文件的路径。
只有当你有 logback 时才有效,spring 写入路径中的文件
application.yml
...
logging:
path: ./path/to/file
...
终于我找到了log4j2的解决方案:
application.yml
...
endpoints:
logfile:
external-file: logs/custom.log
...
只有在你去掉日志记录的情况下才有效。* 属性
在这个answer找到它
【讨论】:
【参考方案2】:这个link 可能会有所帮助。
一个简单的 log4j2 配置如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout
pattern="%style%dISO8601black %highlight%-5level [%style%tbright,blue] %style%C1.bright,yellow: %msg%n%throwable" />
</Console>
<RollingFile name="RollingFile"
fileName="./logs/spring-boot-logger-log4j2.log"
filePattern="./logs/$$date:yyyy-MM/spring-boot-logger-log4j2-%d-dd-MMMM-yyyy-%i.log.gz">
<PatternLayout>
<pattern>%d %p %C1. [%t] %m%n</pattern>
</PatternLayout>
<Policies>
<!-- rollover on startup, daily and when the file reaches 10 MegaBytes-->
<OnStartupTriggeringPolicy />
<SizeBasedTriggeringPolicy size="10 MB" />
<TimeBasedTriggeringPolicy />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<!-- LOG everything at INFO level -->
<Root level="info">
<AppenderRef ref="Console" />
<AppenderRef ref="RollingFile" />
</Root>
<!-- LOG "com.example*" at TRACE level -->
<Logger name="com.example" level="trace"></Logger>
</Loggers>
</Configuration>
如果您使用这样的文件,则只有在 -tag 中定义的 Logger 将显示在执行器端点。因此,如果您想查看更多 Logger,则必须将它们添加到此文件中。
【讨论】:
这是正确的答案,但不足以让我达到预期的结果。看看我下面的回答。结合您的解决方案,这可以全面解决问题。以上是关于如何将 log4j2 与 spring boot 执行器一起使用的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Sleuth 在我的 Spring Boot 服务中不能与 Log4j2 一起使用
[Docker容器内的Spring Boot应用程序的log4j2日志
如何在 Spring Boot 中使用 Log4J2 复合配置