java - 将 application.properties 传递给 Logback 自定义过滤器

标签 java spring spring-boot logback

我使用spring boot,我想在logback的自定义过滤器中获取application.properties属性。我知道如何正常进入,但这对我来说是完全不同的情况。

我的应用程序属性,

sample.name="firstName"

和 logback-spring.xml 包含,

<configuration>

    <property resource="application.properties" />

    <springProperty scope="context" name="firstName" source="sample.name"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>${logging.console.level:-ERROR}</level>
        </filter>
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="com.xxx.xxx.logback.LogbackJsonEventLayout"/>
        </encoder>
        <filter class="com.xx.xx.logging.CriticalAlertLoggerFilter"/>

    </appender>

    <root level="error">
        <appender-ref ref="STDOUT"/>
    </root>
</configuration>

已创建客户过滤器,

import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.filter.Filter;
import ch.qos.logback.core.spi.FilterReply;

@Component
public class CriticalAlertLoggerFilter extends Filter<ILoggingEvent> {

  public static final String ALERT_CRITICAL_STATUS = "CRITICAL";

  @Value("${firstName}")  // This is not working using @Value and not sure how to get it.
  private String name;

  @Override
  public FilterReply decide(ILoggingEvent event) {
    if (event.getLevel().isGreaterOrEqual(Level.ERROR)) {
      MDC.put("sp-eventSourceUUID",name);

    return FilterReply.ACCEPT;
  }
}

我想知道如何在我的客户过滤器中获取sample.name的属性值。

最佳答案

过滤器不应包含 Spring 注释。为 name 属性创建一个 setter 方法,并通过 logback-spring.xml 设置其值,如下所示:

<filter class="com.mycompany.logback.filter.CriticalAlertLoggerFilter">
    <name>${firstName}</name>
</filter>

它就像示例中的 ThresholdFilter (它有一个 setLevel() 方法)。

关于java - 将 application.properties 传递给 Logback 自定义过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60888298/

相关文章:

java错误未报告异常java.lang.Exception;必须被捕获或宣布被扔出

java - 如何优化寻找特定对象?

java - 在 Clojure 中使用 JSoup 解析字符串

java - 如果没有 Spring MVC,可以使用 'Spring RESTful' + 'Java Config' + 'Tests' 吗?

java - 无法从 springboot 应用程序中的 HornetQ 队列读取消息

java - 动态访问 alfresco-global.properties

java - 使用 Spring boot 执行 Google Cloud App 时出现问题

java - 将 Gradle.build 版本导入 Spring Boot

java - 如何在 bean 上提供 @ControllerAdvice 条件?

java - 如何从文本文件创建树形图