diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/structured/GraylogExtendedLogFormatProperties.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/structured/GraylogExtendedLogFormatProperties.java index 396771e572..4cb0491afe 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/structured/GraylogExtendedLogFormatProperties.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/structured/GraylogExtendedLogFormatProperties.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,7 +32,12 @@ import org.springframework.util.StringUtils; */ public record GraylogExtendedLogFormatProperties(String host, Service service) { - static final GraylogExtendedLogFormatProperties NONE = new GraylogExtendedLogFormatProperties(null, Service.NONE); + static final GraylogExtendedLogFormatProperties NONE = new GraylogExtendedLogFormatProperties(null, null); + + public GraylogExtendedLogFormatProperties(String host, Service service) { + this.host = host; + this.service = (service != null) ? service : Service.NONE; + } GraylogExtendedLogFormatProperties withDefaults(Environment environment) { String name = withFallbackProperty(environment, this.host, "spring.application.name"); diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/logging/structured/GraylogExtendedLogFormatPropertiesTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/logging/structured/GraylogExtendedLogFormatPropertiesTests.java index 1d92c1c53b..f030323647 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/logging/structured/GraylogExtendedLogFormatPropertiesTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/logging/structured/GraylogExtendedLogFormatPropertiesTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -41,6 +41,32 @@ class GraylogExtendedLogFormatPropertiesTests { assertThat(properties).isEqualTo(new GraylogExtendedLogFormatProperties("spring", new Service("1.2.3"))); } + @Test + void getBindsFromEnvironmentWhenHostIsPresentAndServiceIsMissing() { + MockEnvironment environment = new MockEnvironment(); + environment.setProperty("logging.structured.gelf.host", "spring"); + GraylogExtendedLogFormatProperties properties = GraylogExtendedLogFormatProperties.get(environment); + assertThat(properties).isEqualTo(new GraylogExtendedLogFormatProperties("spring", new Service(null))); + } + + @Test + void getBindsFromEnvironmentWhenHostIsPresentAndServiceIsMissingUsesApplicationVersion() { + MockEnvironment environment = new MockEnvironment(); + environment.setProperty("logging.structured.gelf.host", "spring"); + environment.setProperty("spring.application.version", "1.2.3"); + GraylogExtendedLogFormatProperties properties = GraylogExtendedLogFormatProperties.get(environment); + assertThat(properties).isEqualTo(new GraylogExtendedLogFormatProperties("spring", new Service("1.2.3"))); + } + + @Test + void getBindsFromEnvironmentWhenVersionIsPresentAndHostIsMissingUsesApplicationName() { + MockEnvironment environment = new MockEnvironment(); + environment.setProperty("spring.application.name", "spring"); + environment.setProperty("logging.structured.gelf.service.version", "1.2.3"); + GraylogExtendedLogFormatProperties properties = GraylogExtendedLogFormatProperties.get(environment); + assertThat(properties).isEqualTo(new GraylogExtendedLogFormatProperties("spring", new Service("1.2.3"))); + } + @Test void getWhenNoServiceNameUsesApplicationName() { MockEnvironment environment = new MockEnvironment();