Java 我的EvaluatorFilter没有';t在弹簧靴中工作+;logback-access.xml
我已经成功地将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文件如下所示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.
<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>