spring-boot - 日志记录执行器健康调用,即使被排除在外
问题描述
我正在将 Zolando Logbook 用于 Spring Boot 服务(版本 2.1.6 spring boot 版本,1.13.0 Logbook 版本),并且执行器健康端点被记录,即使它被指定为排除。包含在 yaml 文件中时,其他端点被正确排除。
这是 yaml 文件的相关部分:
logbook:
exclude:
- /actuator/health
- /actuator/**
- /health
- /v2/api-docs
- /swagger-ui.html
解决方案
我遇到了类似的问题,所以我想与任何处于相同情况的人分享我的解决方案,他们试图在 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
推荐阅读
- java - Java CompletableFuture:尝试将两个 void 方法作为 CompletableFuture 运行并阻塞,直到两者都完成
- reactjs - 如何将类组件中的嵌套状态更改为功能组件中的状态?
- javascript - 传递到函数队列时保留对象状态(Javascript)
- c# - Unity3D在右(x或z)轴上调整CUBE“endRotation”
- jquery - 不同浏览器中的数据表jquery时间
- ember.js - 将数据传递给 Ember Octane 组件时不需要的双向数据绑定
- raspberry-pi - SocketCAN - 设备状态“已停止”
- reactjs - Material UI Drawer在打开时将背景页面滚动到顶部
- featuretools - 如何规范化特征工具中一个特征具有多个值的实体?
- angular - 角度从数组中删除obj数据(方法问题)