Java 我的EvaluatorFilter没有';t在弹簧靴中工作+;logback-access.xml

Java 我的EvaluatorFilter没有';t在弹簧靴中工作+;logback-access.xml,java,spring-boot,logback,Java,Spring Boot,Logback,我已经成功地将logback-access.xml与Tomcat项目上的Spring Boot集成,但就我的一生而言,我无法让它尊重我的ch.qos.logback.core.filter.EvaluatorFilter。它肯定会看到并使用我的logback-access.xml文件(如果我更改encoder.pattern,输出消息就会更改),但似乎没有注意到我在那里配置的过滤器;我没有得到我想要的效果,即从/healthz URL禁止任何访问日志消息,并且我没有看到我的System.out.

我已经成功地将logback-access.xml与Tomcat项目上的Spring Boot集成,但就我的一生而言,我无法让它尊重我的ch.qos.logback.core.filter.EvaluatorFilter。它肯定会看到并使用我的logback-access.xml文件(如果我更改encoder.pattern,输出消息就会更改),但似乎没有注意到我在那里配置的过滤器;我没有得到我想要的效果,即从/healthz URL禁止任何访问日志消息,并且我没有看到我的System.out.println请求帮助

logback-access.xml文件如下所示

<configuration>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
            <evaluator>
                <expression>
                    System.out.println("ROBERT!!!! " + formattedMessage);
                    return formattedMessage.contains("/healthz");
                </expression>
            </evaluator>
            <OnMismatch>NEUTRAL</OnMismatch>
            <OnMatch>DENY</OnMatch>
        </filter>
        <encoder>
            <pattern>%h %l %u %user %date "%r" %s %b</pattern>
        </encoder>
    </appender>
    <appender-ref ref="CONSOLE"/>
</configuration>
日志输出嘲笑我

0:0:0:0:0:0:0:1 - - - 22/Jun/2017:15:16:17 -0700 "GET /healthz HTTP/1.1" 200 27
0:0:0:0:0:0:0:1 - - - 22/Jun/2017:15:18:18 -0700 "GET /v1/scouting_activities/fcdc7aae-4f11-4476-bb81-6d5e3f52e1b4 HTTP/1.1" 200 1939

如何在Spring Boot 1.4.1下的logback-access.xml中获取ch.qos.logback.core.filter.EvaluatorFilter并跳过get/healthz请求?

如果调试logback配置,您将看到问题(

问题是,logback访问不在上运行,而是在上运行

每种类型的事件都有
JaninEventEvaluator
类。
logback access evaluator没有
formattedMessage

但是,它确实具有
事件
值,该值是
IAccessEvent
的一个实例

11:03:53,559 |-ERROR in ch.qos.logback.access.boolex.JaninoEventEvaluator@649725e3 - Could not start evaluator with expression [System.out.println("ROBERT!!!! " + formattedMessage);
                    return false;] org.codehaus.commons.compiler.CompileException: Line 1, Column 52: Expression "formattedMessage" is not an rvalue
    at org.codehaus.commons.compiler.CompileException: Line 1, Column 52: Expression "formattedMessage" is not an rvalue
所以只要把你的表达式改成下面的形式,它就会起作用

<expression>
    System.out.println("ROBERT!!!! " + event.getRequestURI());
    return event.getRequestURI().contains("/healthz");
</expression>

System.out.println(“ROBERT!!!!”+event.getRequestURI());
return event.getRequestURI()包含(“/healthz”);

Grrr。我把所有的东西都翻了个版本,都有同样的问题;logback-access.xml从未在Spring Boot 1.5.4.Shot in the dark中执行其EvaluatorFilter,但您是否尝试过在
中使用它?就像这样:
你是达曼!这就像一个冠军。所以我不会再给你12个小时的赏金,但是,请放心。它正向你走来
<expression>
    System.out.println("ROBERT!!!! " + event.getRequestURI());
    return event.getRequestURI().contains("/healthz");
</expression>