Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将spring引导指标持久化为日志?_Java_Logging_Spring Boot_Java 8 - Fatal编程技术网

Java 如何将spring引导指标持久化为日志?

Java 如何将spring引导指标持久化为日志?,java,logging,spring-boot,java-8,Java,Logging,Spring Boot,Java 8,我正在运行一个SpringBoot应用程序,它测量标准和自定义指标。现在,我希望这些指标在elasticsearch中得到保留,以便进一步检查。我有一个正常工作的ELK堆栈,所以对我来说最明显的解决方案是将度量值持久化到日志文件中,并让filebeat收集它 我发现了一个,可以实现这一点,但它使用的是MetricRepository,java 8不再支持它 这是没有帮助的。所有显示的示例都使用一些专有格式或写入数据库 任何人都可以提供一种将度量持久化为日志文件的方法吗?听起来你只需要编写一个Me

我正在运行一个SpringBoot应用程序,它测量标准和自定义指标。现在,我希望这些指标在elasticsearch中得到保留,以便进一步检查。我有一个正常工作的ELK堆栈,所以对我来说最明显的解决方案是将度量值持久化到日志文件中,并让filebeat收集它

我发现了一个,可以实现这一点,但它使用的是
MetricRepository
,java 8不再支持它

这是没有帮助的。所有显示的示例都使用一些专有格式或写入数据库


任何人都可以提供一种将度量持久化为日志文件的方法吗?

听起来你只需要编写一个
MetricWriter
实现,并用
@ExportMetricWriter
标记bean就可以了。只需写入日志即可实现这三种方法

比如:

@Component
@ExportMetricWriter
public class MyMetricWriter implements MetricWriter, Closeable {

  private static final Log logger = LogFactory.getLog(MyMetricWriter.class);


@Override
public void increment(Delta<?> delta) {
    // record increment to log
}

@Override
public void set(Metric<?> value) {
    // record set metric to log
}

@Override
public void reset(String name) {
    // Not implemented
}

@Override
public void close() {
    /// ...
     }
}
@组件
@ExportMetricWriter
公共类MyMetricWriter实现MetricWriter,Closeable{
私有静态最终日志记录器=LogFactory.getLog(MyMetricWriter.class);
@凌驾
公共空间增量(增量){
//记录日志的增量
}
@凌驾
公共无效集(度量值){
//要记录的记录集度量
}
@凌驾
公共无效重置(字符串名称){
//未实施
}
@凌驾
公众假期结束(){
/// ...
}
}

文档中提到了一些其他内容,您可以参考它们的实现以获得灵感

您链接的文档的前两行解释了您需要做什么。我还想知道你是从哪里知道
MetricRepository
已经被弃用了,它仍然没有出现在SpringBoot1.5.2中,也没有出现在SpringBoot2.0.0中。此外,如果您使用Elastic,尽管它需要一个附加的库,但是已经有了一个用于此的库。“如果您使用的是Java 8或Dropwizard metrics,则默认情况下不使用旧的MetricRepository及其InMemoryMetricRepository实现。”-如.ExportMetricWriter中第一个信息框中所述,未找到MetricWriter,并且MetricWriter未实现扩展,因此无法使用此解决方案。有更新吗?我使用的是SpringBoot2