【发布时间】:2019-03-08 01:25:13
【问题描述】:
我正在尝试在应用程序中设置日志记录方案,以在 Dropwizard 中显示线程计数。当我转到 8081 上的管理端口时,我可以看到 Dropwizard 为应用程序提供的指标。例如,在 Gauges 下,您可以看到 jvm.memory.total.used 以及值。我想设置 slf4j 日志以在我的一些请求中显示这一点。因此,例如,我的 GET 请求可能如下所示:
@GET
@TIME
@Produces(MediaType.Application_JSON)
public List<String> getNames {
List<String> nameList = dao.getList();
log.info("Memory used: {}", /*the value for jvm.memory.total.used*/)
return nameList;
}
但是,我一直无法以这种方式公开指标。这是否可能,如果可以,是否可行?
更新:
我设法在 GET 服务中公开了胎面状态的指标,所以现在我正在尝试尝试将结果放入日志语句中。到目前为止,这是我的代码:
@Path("metrics")
@Produces(MediaType.APPLICATION_JSON)
public class GetStuff {
private static final Logger log = LoggerFactory.getLogger(GetStuff.class);
@GET
@Path("/metrics")
public MetricRegistry provideMetrics() {
MetricRegistry metrics = new MetricRegistry();
metrics.register("jvm.threads", new ThreadStatesGaugeSet());
log.info("JVM Thread Count: {}", metrics.getGauges().get("jvm.threads.count"));
return metrics;
}
}
我已经确认这会返回指标,所以现在我正试图让日志语句正常工作,并打印出该量表的值。我现在的主要问题是日志似乎打印出 getGauges 映射中值的地址,而不是与键关联的值。更具体地说,我得到这样的值:
JVM Thread Count: com.codahale.metrics.jvm.ThreadStatesGaugeSet$2@129e489
有谁知道我该如何解决这个问题,以便获得实际价值?
编辑:我打开了另一个与此相关的问题,here。
【问题讨论】:
标签: java mapping dropwizard metrics