为什么过滤后的日志事件的Logback指标会增加?



我有一个配置了Logback评估器过滤器的应用程序,使用JaninoEventEvaluator:

从Hibernate中排除某些日志消息。
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="false">
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator> <!-- defaults to type ch.qos.logback.classic.boolex.JaninoEventEvaluator -->
<expression>return logger.equals("org.hibernate.engine.jdbc.spi.SqlExceptionHelper") &amp;&amp;
(message.contains("duplicate key value violates unique constraint "the_constraint_name"") ||
message.contains("SQLState: 23505"));</expression>
</evaluator>
<OnMismatch>NEUTRAL</OnMismatch>
<OnMatch>DENY</OnMatch>
</filter>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>

<logger name="com.mypackage" level="DEBUG" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>

</configuration>

这很好,duplicate key violates unique constraint消息没有被记录。

问题是每次发生这种情况时,Logback度量logback.events都会增加,因此根据应用程序度量,看起来无论如何都发生了错误。

原因似乎是在io.micrometer.core.instrument.binder.logging.MetricsTurboFilter中定义了这些计数器。如果我正确阅读Logback文档,涡轮过滤器被称为"……"每次发出日志请求": https://logback.qos.ch/manual/filters.html#TurboFilter.

所以我的问题是,如果有任何方法配置千分尺/弹簧启动不增加这个错误度量时,这个错误发生?

我认为这类似于带有自定义过滤器的弹簧启动执行器Logback度量

你能检查一下我的答案吗?如果你不能根据它解决这个问题,你能在GitHub上打开一个问题吗?

最新更新