【问题标题】:honeycomb + spring boot 2 exclude standard fields蜂窝 + 弹簧靴 2 排除标准字段
【发布时间】:2021-02-04 23:15:55
【问题描述】:
我正在使用 Honeycomb 和 Spring Boot。
<dependency>
<groupId>io.honeycomb.beeline</groupId>
<artifactId>beeline-spring-boot-starter</artifactId>
<version>1.0.2</version>
</dependency>
我能够成功地向 Honeycombe 发送数据,但默认情况下,beeline/spring 正在发送标准字段,如“request.path”、“request.header....”、“request....”等。 .
如何排除部分或全部这些标准字段被记录/发送到 Honeycomb?
任何代码/配置示例都会很有用。
【问题讨论】:
标签:
spring
spring-boot
spring-boot-actuator
android-3.2-honeycomb
【解决方案1】:
好的,所以我必须创建 EventPostProcessor 并删除我感兴趣的标准字段...我希望这是正确的做法!
@Configuration
public class HoneycombConfig {
@Bean
public EventPostProcessor honeycombEventPostProcessor(HoneycombDependencyConfig honeycombDependencyConfig) {
return new ApplicationHoneycombEventPostProcessor(honeycombDependencyConfig.getExcludeFields());
}
static class ApplicationHoneycombEventPostProcessor implements EventPostProcessor {
private final List<String> excludeFields;
public ApplicationHoneycombEventPostProcessor(List<String> excludeFields) {
this.excludeFields = excludeFields;
}
@Override
public void process(EventData<?> eventData) {
//over write field
this.excludeFields
.stream()
.filter(field -> eventData.getFields().containsKey(field))
.forEach(field -> eventData.getFields().remove(field));
}
}
}
@Configuration
@ConfigurationProperties(prefix = "dependencies.honeycomb")
public class HoneycombDependencyConfig {
private List<String> excludeFields;
public List<String> getExcludeFields() {
if(this.excludeFields == null) {
this.excludeFields = new ArrayList<>();
}
return excludeFields;
}
public void setExcludeFields(List<String> excludeFields) {
this.excludeFields = excludeFields;
}
}