我有一个配置了Logback评估器过滤器的应用程序,使用JaninoEventEvaluator
:
<?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") &&
(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上打开一个问题吗?