【发布时间】:2023-02-22 07:13:49
【问题描述】:
我有一个配置了 Logback Evaluator Filter 的应用程序,使用 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") &&
(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 都会增加,因此根据应用程序指标,它看起来无论如何都发生了错误。
Reson 似乎在 io.micrometer.core.instrument.binder.logging.MetricsTurboFilter 中,这些计数器是 defined。如果我正确阅读了 Logback 文档,Turbo 过滤器被称为“...每次发出日志记录请求”:https://logback.qos.ch/manual/filters.html#TurboFilter。
所以我的问题是,如果发生此错误,是否有任何方法可以配置 Micrometer/Spring Boot 不增加此错误指标?
【问题讨论】:
标签: java spring-boot logback micrometer