理想情况下,我希望使用YAML日志记录配置来防止重复的日志消息。类似于logback中的TurboFilter类
https://logback.qos.ch/manual/filters.html#TurboFilter
<configuration>
<turboFilter
class="ch.qos.logback.classic.turbo.DuplicateMessageFilter">
<AllowedRepetitions>2</AllowedRepetitions>
</turboFilter>
</configuration>
如果不可能,我想抑制/过滤/重定向来自一个特定类的日志消息,或者将包含特定字符串的消息记录到文件位置。
答案 0 :(得分:0)
目前DropWizard日志记录不支持TurboFilters。您需要使用读取Logback配置文件的自定义文件覆盖LoggingFactory,然后您可以配置所需的任何内容。我使用这种方法创建了一个简单的DW project,但基本上你需要像这样实现一个LoggingFactory:
public class SOQ48815685Logging implements LoggingFactory {
@JsonIgnore
private LoggerContext loggerContext;
@JsonIgnore
private final ContextInitializer contextInitializer;
public SOQ48815685Logging() {
this.loggerContext = LoggingUtil.getLoggerContext();
this.contextInitializer = new ContextInitializer(loggerContext);
}
@Override
public void configure(MetricRegistry metricRegistry, String name) {
try {
contextInitializer.autoConfig();
} catch (JoranException e) {
throw new RuntimeException(e);
}
}
@Override
public void stop() {
loggerContext.stop();
}
@Override
public void reset() {
loggerContext.reset();
}
}
然后你需要覆盖&#34; getLoggingFactory&#34; Configuration类上的方法:
public class SOQ48815685Configuration extends Configuration {
@Override
public synchronized LoggingFactory getLoggingFactory() {
return new SOQ48815685Logging();
}
}