Home / Class/ LoggingSystemPropertiesTests Class — spring-boot Architecture

LoggingSystemPropertiesTests Class — spring-boot Architecture

Architecture documentation for the LoggingSystemPropertiesTests class in LoggingSystemPropertiesTests.java from the spring-boot codebase.

Entity Profile

Source Code

core/spring-boot/src/test/java/org/springframework/boot/logging/LoggingSystemPropertiesTests.java lines 49–256

class LoggingSystemPropertiesTests {

	private Set<Object> systemPropertyNames;

	@BeforeEach
	void captureSystemPropertyNames() {
		for (LoggingSystemProperty property : LoggingSystemProperty.values()) {
			System.getProperties().remove(property.getEnvironmentVariableName());
		}
		System.getProperties().remove("LOGGED_APPLICATION_NAME");
		this.systemPropertyNames = new HashSet<>(System.getProperties().keySet());
	}

	@AfterEach
	void restoreSystemProperties() {
		System.getProperties().keySet().retainAll(this.systemPropertyNames);
	}

	@Test
	void pidIsSet() {
		new LoggingSystemProperties(new MockEnvironment()).apply(null);
		assertThat(getSystemProperty(LoggingSystemProperty.PID)).isNotNull();
	}

	@Test
	void consoleLogPatternIsSet() {
		new LoggingSystemProperties(new MockEnvironment().withProperty("logging.pattern.console", "console pattern"))
			.apply(null);
		assertThat(getSystemProperty(LoggingSystemProperty.CONSOLE_PATTERN)).isEqualTo("console pattern");
	}

	@Test
	void consoleCharsetWhenNoPropertyUsesCharsetDefault() {
		LoggingSystemProperties loggingSystemProperties = spy(new LoggingSystemProperties(new MockEnvironment()));
		given(loggingSystemProperties.getConsole()).willReturn(null);
		loggingSystemProperties.apply(null);
		assertThat(getSystemProperty(LoggingSystemProperty.CONSOLE_CHARSET)).isEqualTo(Charset.defaultCharset().name());
	}

	@Test
	void consoleCharsetWhenNoPropertyUsesSystemConsoleCharsetWhenAvailable() {
		LoggingSystemProperties loggingSystemProperties = spy(new LoggingSystemProperties(new MockEnvironment()));
		Console console = mock(Console.class);
		given(console.charset()).willReturn(StandardCharsets.UTF_16BE);
		given(loggingSystemProperties.getConsole()).willReturn(console);
		loggingSystemProperties.apply(null);
		assertThat(getSystemProperty(LoggingSystemProperty.CONSOLE_CHARSET))
			.isEqualTo(StandardCharsets.UTF_16BE.name());
	}

	@Test
	void consoleCharsetIsSet() {
		new LoggingSystemProperties(new MockEnvironment().withProperty("logging.charset.console", "UTF-16"))
			.apply(null);
		assertThat(getSystemProperty(LoggingSystemProperty.CONSOLE_CHARSET)).isEqualTo("UTF-16");
	}

	@Test
	void fileLogPatternIsSet() {
		new LoggingSystemProperties(new MockEnvironment().withProperty("logging.pattern.file", "file pattern"))
			.apply(null);
		assertThat(getSystemProperty(LoggingSystemProperty.FILE_PATTERN)).isEqualTo("file pattern");
	}

	@Test
	void fileCharsetWhenNoPropertyUsesUtf8() {
		new LoggingSystemProperties(new MockEnvironment()).apply(null);
		assertThat(getSystemProperty(LoggingSystemProperty.FILE_CHARSET)).isEqualTo("UTF-8");
	}

	@Test
	void fileCharsetIsSet() {
		new LoggingSystemProperties(new MockEnvironment().withProperty("logging.charset.file", "UTF-16")).apply(null);
		assertThat(getSystemProperty(LoggingSystemProperty.FILE_CHARSET)).isEqualTo("UTF-16");
	}

	@Test
	void consoleLogPatternCanReferencePid() {
		new LoggingSystemProperties(environment("logging.pattern.console", "${PID:unknown}")).apply(null);
		assertThat(getSystemProperty(LoggingSystemProperty.CONSOLE_PATTERN)).matches("[0-9]+");
	}

	@Test
	void fileLogPatternCanReferencePid() {
		new LoggingSystemProperties(environment("logging.pattern.file", "${PID:unknown}")).apply(null);
		assertThat(getSystemProperty(LoggingSystemProperty.FILE_PATTERN)).matches("[0-9]+");
	}

	private String getSystemProperty(LoggingSystemProperty property) {
		return System.getProperty(property.getEnvironmentVariableName());
	}

	@Test
	void correlationPatternIsSet() {
		new LoggingSystemProperties(
				new MockEnvironment().withProperty("logging.pattern.correlation", "correlation pattern"))
			.apply(null);
		assertThat(System.getProperty(LoggingSystemProperty.CORRELATION_PATTERN.getEnvironmentVariableName()))
			.isEqualTo("correlation pattern");
	}

	@Test
	void defaultValueResolverIsUsed() {
		MockEnvironment environment = new MockEnvironment();
		Map<String, String> defaultValues = Map
			.of(LoggingSystemProperty.CORRELATION_PATTERN.getApplicationPropertyName(), "default correlation pattern");
		new LoggingSystemProperties(environment, defaultValues::get, null).apply(null);
		assertThat(System.getProperty(LoggingSystemProperty.CORRELATION_PATTERN.getEnvironmentVariableName()))
			.isEqualTo("default correlation pattern");
	}

	@Test
	void loggedApplicationNameWhenHasApplicationName() {
		new LoggingSystemProperties(new MockEnvironment().withProperty("spring.application.name", "test")).apply(null);
		assertThat(getSystemProperty(LoggingSystemProperty.APPLICATION_NAME)).isEqualTo("test");
	}

	@Test
	void loggedApplicationNameWhenHasNoApplicationName() {
		new LoggingSystemProperties(new MockEnvironment()).apply(null);
		assertThat(getSystemProperty(LoggingSystemProperty.APPLICATION_NAME)).isNull();
	}

	@Test
	void loggedApplicationNameWhenApplicationNameLoggingDisabled() {
		new LoggingSystemProperties(new MockEnvironment().withProperty("spring.application.name", "test")
			.withProperty("logging.include-application-name", "false")).apply(null);
		assertThat(getSystemProperty(LoggingSystemProperty.APPLICATION_NAME)).isNull();
	}

	@Test
	void legacyLoggedApplicationNameWhenHasApplicationName() {
		new LoggingSystemProperties(new MockEnvironment().withProperty("spring.application.name", "test")).apply(null);
		assertThat(System.getProperty("LOGGED_APPLICATION_NAME")).isEqualTo("[test] ");
	}

	@Test
	void applicationGroupWhenHasApplicationGroup() {
		new LoggingSystemProperties(new MockEnvironment().withProperty("spring.application.group", "test")).apply(null);
		assertThat(getSystemProperty(LoggingSystemProperty.APPLICATION_GROUP)).isEqualTo("test");
	}

	@Test
	void applicationGroupWhenHasNoApplicationGroup() {
		new LoggingSystemProperties(new MockEnvironment()).apply(null);
		assertThat(getSystemProperty(LoggingSystemProperty.APPLICATION_GROUP)).isNull();
	}

	@Test
	void applicationGroupWhenApplicationGroupLoggingDisabled() {
		new LoggingSystemProperties(new MockEnvironment().withProperty("spring.application.group", "test")
			.withProperty("logging.include-application-group", "false")).apply(null);
		assertThat(getSystemProperty(LoggingSystemProperty.APPLICATION_GROUP)).isNull();
	}

	@Test
	void shouldSupportFalseConsoleThreshold() {
		new LoggingSystemProperties(new MockEnvironment().withProperty("logging.threshold.console", "false"))
			.apply(null);
		assertThat(System.getProperty(LoggingSystemProperty.CONSOLE_THRESHOLD.getEnvironmentVariableName()))
			.isEqualTo("OFF");
	}

	@Test
	void shouldSupportFalseFileThreshold() {
		new LoggingSystemProperties(new MockEnvironment().withProperty("logging.threshold.file", "false")).apply(null);
		assertThat(System.getProperty(LoggingSystemProperty.FILE_THRESHOLD.getEnvironmentVariableName()))
			.isEqualTo("OFF");
	}

	@Test
	void shouldSetFileStructuredLogging() {
		new LoggingSystemProperties(new MockEnvironment().withProperty("logging.structured.format.file", "ecs"))
			.apply(null);
		assertThat(System.getProperty(LoggingSystemProperty.FILE_STRUCTURED_FORMAT.getEnvironmentVariableName()))
			.isEqualTo("ecs");
	}

	@Test
	void shouldSetConsoleStructuredLogging() {
		new LoggingSystemProperties(new MockEnvironment().withProperty("logging.structured.format.console", "ecs"))
			.apply(null);
		assertThat(System.getProperty(LoggingSystemProperty.CONSOLE_STRUCTURED_FORMAT.getEnvironmentVariableName()))
			.isEqualTo("ecs");
	}

	@Test
	void shouldSetConsoleLevelThresholdToOffWhenConsoleLoggingDisabled() {
		new LoggingSystemProperties(new MockEnvironment().withProperty("logging.console.enabled", "false")).apply(null);
		assertThat(System.getProperty(LoggingSystemProperty.CONSOLE_THRESHOLD.getEnvironmentVariableName()))
			.isEqualTo("OFF");
	}

	@Test
	void shouldNotChangeConsoleLevelThresholdWhenConsoleLoggingEnabled() {
		new LoggingSystemProperties(new MockEnvironment().withProperty("logging.console.enabled", "true")
			.withProperty("logging.threshold.console", "TRACE")).apply(null);
		assertThat(System.getProperty(LoggingSystemProperty.CONSOLE_THRESHOLD.getEnvironmentVariableName()))
			.isEqualTo("TRACE");
	}

	private Environment environment(String key, Object value) {
		StandardEnvironment environment = new StandardEnvironment();
		environment.getPropertySources().addLast(new MapPropertySource("test", Collections.singletonMap(key, value)));
		return environment;
	}

}

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free