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 396771e572d8..0e671c216fba 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. @@ -34,6 +34,11 @@ public record GraylogExtendedLogFormatProperties(String host, Service service) { static final GraylogExtendedLogFormatProperties NONE = new GraylogExtendedLogFormatProperties(null, Service.NONE); + 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"); Service service = this.service.withDefaults(environment); 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 1d92c1c53be3..71d2f02ec2b6 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,23 @@ void getBindsFromEnvironment() { 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", Service.NONE)); + } + + @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 getWhenNoServiceNameUsesApplicationName() { MockEnvironment environment = new MockEnvironment();