我有一个我在Dropwizard(0.9)中开发的应用程序,我们内部基础架构的一部分定期ping管理员运行状况检查REST端点以验证服务已启动。这增加了很多:
127.0.0.1 - - [26/Sep/2016:21:47:04 +0000] "GET /healthcheck HTTP/1.1" 200 - "-" "curl/7.43.0" 27
到日志文件。调整我们的内部工具超出范围,因此我想配置记录器以使这些条目静音。不幸的是,我无法识别生成这些消息的类。哪个类负责内置/健康检查端点,并且很简单:
logging:
loggers:
"com.class.that.is.responsible": ERROR
yaml配置中的条目会抑制它们吗?
答案 0 :(得分:0)
您可以通过将其添加到YAML配置中来抑制它:
server:
requestLog:
appenders: []
这些日志条目来自request log
,此处有更多信息:
https://www.dropwizard.io/en/latest/manual/configuration.html#request-log
答案 1 :(得分:0)
您可以使用logging filter过滤掉健康检查请求。
这意味着有一个过滤器类:
@JsonTypeName("healthcheck-filter-factory")
public class HealthCheckLogFilter implements FilterFactory<IAccessEvent> {
@Override
public Filter<IAccessEvent> build() {
return new Filter<IAccessEvent>() {
@Override
public FilterReply decide(IAccessEvent event) {
if (event.getRequestURI().equals("/") || event.getRequestURI().equals("/healthcheck")) {
return FilterReply.DENY;
} else {
return FilterReply.NEUTRAL;
}
}
};
}
}
然后,通过将过滤器的包名称和类名称写入META-INF/services/io.dropwizard.logging.filter.FilterFactory
文件来注册过滤器类:
com.my.package.path.goes.here.HealthCheckLogFilter
最后,将其添加到配置.yaml文件:
requestLog:
appenders:
- type: console
filterFactories:
- type: healthcheck-filter-factory
答案 2 :(得分:0)
如果您使用的是 DropWizard v2.0.0 或更高版本,则可以使用内置的 UriFilterFactory
。您可以通过将其添加到 dropwizard 配置 .yaml 来省略特定端点的日志:
server:
requestLog:
appenders:
- type: console
filterFactories:
- type: uri
uris:
- "/healthcheck"
注意:DropWizard 文档使用 type: URI
,这将不起作用。 source code 中的 @JsonTypeName
是 uri
,因此您必须使用小写名称。