Spring Boot 如何在Sping Boot 2.x中配置LoggingMeterRegistry步骤持续时间?

bbmckpt7  于 2023-02-16  发布在  Spring
关注(0)|答案(3)|浏览(275)

我正在尝试配置LoggingMeterRegistry来记录我的Sping Boot 2.1.6应用程序的指标。我希望每小时记录一次指标。
在我的应用程序.yml中,我配置了以下内容

management:
  metrics:
    export:
      logging:
        enabled: true
        step: 60m

但是在日志中,我看到每分钟都在记录指标。我也尝试了属性键的其他变体,例如。

management.metrics.export.logging:
  enabled: true
  step: 60m

我还尝试了各种格式的持续时间字符串eidogg. 1hPT60M,但没有成功。指标以1分钟的间隔记录。
我看了这里的代码StepDurationConverterTest和这里的StepDurationConverter,它们将步骤持续时间字符串转换为持续时间对象,看起来60m1h都应该工作。
你知道为什么我不能改变测井间隔吗?

qzlgjiam

qzlgjiam1#

我认为这里的问题是没有像其他MeterRegistry(如org.springframework.boot.actuate.autoconfigure.metrics.export.jmx)那样的org.springframework.boot.actuate.autoconfigure.metrics.export.logging包。
即在Sping Boot 中没有自动配置属性。这可能是因为LoggingMeterRegistry被标记为@Incubating
您需要手动将LoggingMeterRegistry配置为bean,并创建自己的@ConfigurationPropertiesLoggingPropertiesLoggingPropertiesConfigAdapter,或者只是硬编码您想要的步长周期。

jtw3ybtb

jtw3ybtb2#

要以微米为单位配置步数持续时间:请按照以下步骤操作:

@Configuration
public class LoggingMeterRegistryConfig {
    @Bean
    public LoggingMeterRegistry loggingMeterRegistry() {

        LoggingRegistryConfig config = new LoggingRegistryConfig() {

            @Override
            public String get(String s) {

                return null;
            }

            @Override
            public Duration step() {

                return Duration.ofMinutes(2);
            }
        };
        return LoggingMeterRegistry.builder(config).clock(Clock.SYSTEM).threadFactory(new NamedThreadFactory("logging-metrics-publisher")).build();
    }

    }
qrjkbowd

qrjkbowd3#

下面的@Bean提供了来自Spring Environment的config,允许您指定一个属性logging.step: 1h来获得所需的周期。

@Bean
    LoggingMeterRegistry loggingMeterRegistry(Environment env) {
        LoggingRegistryConfig springBasedConfig = prop -> env.getProperty(prop, String.class);
        return new LoggingMeterRegistry(springBasedConfig, Clock.SYSTEM);
    }

相关问题