Java优雅埋点API的设计思路
用于记录应用程序埋点数据的APIhttps://github.com/kevinten10/vrml埋点API的问题主流程隔离例如旁支逻辑的NPE或者GSON解析异常等支持Debug级别支持Debug级别简洁易用的API实现思路和方案单个异常的隔离通过闭包进行trycatch,进行异常的隔离支持不同级别的配置通过闭包传入配置,实现动态的配置简洁易用的APIMetrics API单个异常的隔离 √支
·
用于记录应用程序埋点数据的API
https://github.com/kevinten10/vrml
埋点API的问题
- 主流程隔离
例如旁支逻辑的NPE或者GSON解析异常等 - 支持Debug级别支持Debug级别
- 简洁易用的API
实现思路和方案
- 单个异常的隔离
通过闭包进行trycatch,进行异常的隔离 - 支持不同级别的配置
通过闭包传入配置,实现动态的配置 - 简洁易用的API
Metrics API
- 单个异常的隔离 √
- 支持不同级别的配置 √
- 简洁易用的API √
- 支持局部分片 √
- 支持表达式 √
Metric API
Metric API提供了一系列方法来记录应用程序的埋点数据。
/**
* API demo show
*/
private static void metrics(BiConsumer<Map<String, String>, Map<String, String>> howToShow) {
// Option 1: add metric manually
Metrics.metric(() -> {
// index
index(MetricIndexs.metric_type, "index");
// store
store(MetricStores.context, "store");
// exception
exception(new RuntimeException());
// object
object(new Object());
});
howToShow.accept(Metrics.showIndexs(), Metrics.showStores());
Metrics.build();
// Option 2: add metric by automatic placeholder "$"
Metrics.Log().of(
// index
$(MetricIndexs.metric_type, "index"),
// store
$(MetricStores.context, "store"),
// exception
$(new RuntimeException()),
// object
$(new Object())
);
howToShow.accept(Metrics.showIndexs(), Metrics.showStores());
Metrics.build();
// Also you can use {@code local()} to start a local scope
String local = Metrics.local();
Metrics.Log(local).of(
// Also you can use supplier
() -> $(MetricIndexs.metric_type, "index"),
() -> $(MetricStores.context, "store"),
() -> $(new RuntimeException()),
() -> $(new Object())
);
howToShow.accept(Metrics.showIndexs(), Metrics.showStores());
Metrics.build(local);
}
Maven
<dependency>
<groupId>com.kevinten</groupId>
<artifactId>vrml-metric</artifactId>
<version>1.0.0</version>
</dependency>
更多推荐
已为社区贡献4条内容
所有评论(0)