我遇到了类似的问题,所以我想与任何处于相同情况的人分享我的解决方案,他们试图在 Spring Boot 中使日志与 log4j2 一起工作
确保您在pom.xml中具有正确的依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
<groupId>org.zalando</groupId>
<artifactId>logbook-spring-boot-starter</artifactId>
<version>${logbook.version}</version>
</dependency>
通过在src/main/resources中创建log4j2.xml文件来 配置 log4j
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info">
<Appenders>
<Console name="Console_Appender" target="SYSTEM_OUT">
<PatternLayout
pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" />
</Console>
<RollingFile name="logbook-logToFile" fileName="logs/logbook.log"
filePattern="${APP_LOG_ROOT}/app-trace-%d{yyyy-MM-dd}-%i.log" >
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
<Policies>
<SizeBasedTriggeringPolicy size="19500KB" />
</Policies>
<DefaultRolloverStrategy max="1"/>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="org.zalando.logbook.Logbook" level="trace" additivity="false">
<AppenderRef ref="Console_Appender"/>
<AppenderRef ref="logbook-logToFile"/>
</Logger>
<Root level="info">
<AppenderRef ref="Console_Appender" />
<AppenderRef ref="logbook-logToFile"/>
</Root>
</Loggers>
</Configuration>
此配置将所有内容输出到控制台以及指定文件中。(您还可以使用此处描述的 yaml、json 或编程配置:https ://logging.apache.org/log4j/2.x/manual/configuration.html )
要配置日志(例如从日志中排除一些端点),只需创建一个像这样的配置类:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.zalando.logbook.Logbook;
import static org.zalando.logbook.Conditions.exclude;
import static org.zalando.logbook.Conditions.requestTo;
@Configuration
public class LogbookConfiguration {
@Bean
public Logbook logbook() {
Logbook logbook = Logbook.builder()
.condition(exclude(
requestTo("/actuator/**"),
requestTo("/admin/**")))
.build();
return logbook;
}
}
(我很难找到这些静态导入,因为我的 IDE 不会在这里提出任何建议)
这只是基本设置,您可以在日志文档中找到更深入的信息:https ://github.com/zalando/logbook#conditional