【问题标题】:Logbook logging actuator health calls even when excluded日志记录执行器健康调用,即使被排除在外
【发布时间】:2019-07-23 15:24:14
【问题描述】:

我正在将 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

【问题讨论】:

  • 你能从排除项中删除 - /actuator/health,因为 /actuator/** 匹配所有执行器+后缀端点。

标签: spring-boot spring-boot-actuator logbook


【解决方案1】:

我遇到了同样的问题, 我尝试了以下方法并且成功了:

logbook:
  exclude[1]: '**/swagger-ui.html'
  exclude[0]: '**/v2/api-docs'
  exclude[3]: '**/swagger-resources/**'
  exclude[2]: '**/webjars/**'
  exclude[5]: '**/'
  exclude[4]: '**/csrf'

如果您有 .properties 文件:

logbook.exclude[0]=**/v2/api-docs
logbook.exclude[1]=**/swagger-ui.html
logbook.exclude[2]=**/webjars/**
logbook.exclude[3]=**/swagger-resources/**
logbook.exclude[4]=**/csrf
logbook.exclude[5]=**/

如果您必须排除更多路径,您可以定义为:

logbook.write.max-body-size=10

我从here那里得到了解决方案

【讨论】:

    【解决方案2】:

    我遇到了类似的问题,所以我想与任何处于相同情况的人分享我的解决方案,他们试图在 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-13
      • 1970-01-01
      • 2012-05-25
      • 2020-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多