0

我正在使用 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?

任何代码/配置示例都会很有用。

4

1 回答 1

0

好的,所以我必须创建 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;
}

}

于 2021-02-05T11:25:11.053 回答