Replace LoggingSystemProperties constants with an Enum

Extract contants from `LoggingSystemProperty` and
`LogbackLoggingSystemProperties` in enum classes.

Closes gh-36015
pull/36032/head
Phillip Webb 1 year ago
parent 3a796aedea
commit b6120d504a

@ -1,5 +1,5 @@
/*
* Copyright 2012-2020 the original author or authors.
* Copyright 2012-2023 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.
@ -86,13 +86,13 @@ public class LogFile {
* @param properties the properties to apply to
*/
public void applyTo(Properties properties) {
put(properties, LoggingSystemProperties.LOG_PATH, this.path);
put(properties, LoggingSystemProperties.LOG_FILE, toString());
put(properties, LoggingSystemProperty.LOG_PATH, this.path);
put(properties, LoggingSystemProperty.LOG_FILE, toString());
}
private void put(Properties properties, String key, String value) {
private void put(Properties properties, LoggingSystemProperty property, String value) {
if (StringUtils.hasLength(value)) {
properties.put(key, value);
properties.put(property.getEnvironmentVariableName(), value);
}
}

@ -37,68 +37,120 @@ import org.springframework.util.Assert;
* @author Robert Thornton
* @author Eddú Meléndez
* @since 2.0.0
* @see LoggingSystemProperty
*/
public class LoggingSystemProperties {
/**
* The name of the System property that contains the process ID.
* @deprecated since 3.2.0 for removal in 3.4.0 in favor of calling
* {@link LoggingSystemProperty#getEnvironmentVariableName()} on
* {@link LoggingSystemProperty#PID}
*/
public static final String PID_KEY = "PID";
@Deprecated(since = "3.2.0", forRemoval = true)
public static final String PID_KEY = LoggingSystemProperty.PID.getEnvironmentVariableName();
/**
* The name of the System property that contains the exception conversion word.
* @deprecated since 3.2.0 for removal in 3.4.0 in favor of calling
* {@link LoggingSystemProperty#getEnvironmentVariableName()} on
* {@link LoggingSystemProperty#EXCEPTION_CONVERSION_WORD}
*/
public static final String EXCEPTION_CONVERSION_WORD = "LOG_EXCEPTION_CONVERSION_WORD";
@Deprecated(since = "3.2.0", forRemoval = true)
public static final String EXCEPTION_CONVERSION_WORD = LoggingSystemProperty.EXCEPTION_CONVERSION_WORD
.getEnvironmentVariableName();
/**
* The name of the System property that contains the log file.
* @deprecated since 3.2.0 for removal in 3.4.0 in favor of calling
* {@link LoggingSystemProperty#getEnvironmentVariableName()} on
* {@link LoggingSystemProperty#LOG_FILE}
*/
public static final String LOG_FILE = "LOG_FILE";
@Deprecated(since = "3.2.0", forRemoval = true)
public static final String LOG_FILE = LoggingSystemProperty.LOG_FILE.getEnvironmentVariableName();
/**
* The name of the System property that contains the log path.
* @deprecated since 3.2.0 for removal in 3.4.0 in favor of calling
* {@link LoggingSystemProperty#getEnvironmentVariableName()} on
* {@link LoggingSystemProperty#LOG_PATH}
*/
public static final String LOG_PATH = "LOG_PATH";
@Deprecated(since = "3.2.0", forRemoval = true)
public static final String LOG_PATH = LoggingSystemProperty.LOG_PATH.getEnvironmentVariableName();
/**
* The name of the System property that contains the console log pattern.
* @deprecated since 3.2.0 for removal in 3.4.0 in favor of calling
* {@link LoggingSystemProperty#getEnvironmentVariableName()} on
* {@link LoggingSystemProperty#CONSOLE_PATTERN}
*/
public static final String CONSOLE_LOG_PATTERN = "CONSOLE_LOG_PATTERN";
@Deprecated(since = "3.2.0", forRemoval = true)
public static final String CONSOLE_LOG_PATTERN = LoggingSystemProperty.CONSOLE_PATTERN.getEnvironmentVariableName();
/**
* The name of the System property that contains the console log charset.
* @deprecated since 3.2.0 for removal in 3.4.0 in favor of calling
* {@link LoggingSystemProperty#getEnvironmentVariableName()} on
* {@link LoggingSystemProperty#CONSOLE_CHARSET}
*/
public static final String CONSOLE_LOG_CHARSET = "CONSOLE_LOG_CHARSET";
@Deprecated(since = "3.2.0", forRemoval = true)
public static final String CONSOLE_LOG_CHARSET = LoggingSystemProperty.CONSOLE_CHARSET.getEnvironmentVariableName();
/**
* The log level threshold for console log.
* @deprecated since 3.2.0 for removal in 3.4.0 in favor of calling
* {@link LoggingSystemProperty#getEnvironmentVariableName()} on
* {@link LoggingSystemProperty#CONSOLE_THRESHOLD}
*/
public static final String CONSOLE_LOG_THRESHOLD = "CONSOLE_LOG_THRESHOLD";
@Deprecated(since = "3.2.0", forRemoval = true)
public static final String CONSOLE_LOG_THRESHOLD = LoggingSystemProperty.CONSOLE_THRESHOLD
.getEnvironmentVariableName();
/**
* The name of the System property that contains the file log pattern.
* @deprecated since 3.2.0 for removal in 3.4.0 in favor of calling
* {@link LoggingSystemProperty#getEnvironmentVariableName()} on
* {@link LoggingSystemProperty#FILE_PATTERN}
*/
public static final String FILE_LOG_PATTERN = "FILE_LOG_PATTERN";
@Deprecated(since = "3.2.0", forRemoval = true)
public static final String FILE_LOG_PATTERN = LoggingSystemProperty.FILE_PATTERN.getEnvironmentVariableName();
/**
* The name of the System property that contains the file log charset.
* @deprecated since 3.2.0 for removal in 3.4.0 in favor of calling
* {@link LoggingSystemProperty#getEnvironmentVariableName()} on
* {@link LoggingSystemProperty#FILE_CHARSET}
*/
public static final String FILE_LOG_CHARSET = "FILE_LOG_CHARSET";
@Deprecated(since = "3.2.0", forRemoval = true)
public static final String FILE_LOG_CHARSET = LoggingSystemProperty.FILE_CHARSET.getEnvironmentVariableName();
/**
* The log level threshold for file log.
* @deprecated since 3.2.0 for removal in 3.4.0 in favor of calling
* {@link LoggingSystemProperty#getEnvironmentVariableName()} on
* {@link LoggingSystemProperty#FILE_THRESHOLD}
*/
public static final String FILE_LOG_THRESHOLD = "FILE_LOG_THRESHOLD";
@Deprecated(since = "3.2.0", forRemoval = true)
public static final String FILE_LOG_THRESHOLD = LoggingSystemProperty.FILE_THRESHOLD.getEnvironmentVariableName();
/**
* The name of the System property that contains the log level pattern.
* @deprecated since 3.2.0 for removal in 3.4.0 in favor of calling
* {@link LoggingSystemProperty#getEnvironmentVariableName()} on
* {@link LoggingSystemProperty#LEVEL_PATTERN}
*/
public static final String LOG_LEVEL_PATTERN = "LOG_LEVEL_PATTERN";
@Deprecated(since = "3.2.0", forRemoval = true)
public static final String LOG_LEVEL_PATTERN = LoggingSystemProperty.LEVEL_PATTERN.getEnvironmentVariableName();
/**
* The name of the System property that contains the log date-format pattern.
* @deprecated since 3.2.0 for removal in 3.4.0 in favor of calling
* {@link LoggingSystemProperty#getEnvironmentVariableName()} on
* {@link LoggingSystemProperty#DATEFORMAT_PATTERN}
*/
public static final String LOG_DATEFORMAT_PATTERN = "LOG_DATEFORMAT_PATTERN";
@Deprecated(since = "3.2.0", forRemoval = true)
public static final String LOG_DATEFORMAT_PATTERN = LoggingSystemProperty.DATEFORMAT_PATTERN
.getEnvironmentVariableName();
private static final BiConsumer<String, String> systemPropertySetter = (name, value) -> {
if (System.getProperty(name) == null && value != null) {
@ -144,22 +196,6 @@ public class LoggingSystemProperties {
apply(logFile, resolver);
}
protected void apply(LogFile logFile, PropertyResolver resolver) {
setSystemProperty(resolver, EXCEPTION_CONVERSION_WORD, "logging.exception-conversion-word");
setSystemProperty(PID_KEY, new ApplicationPid().toString());
setSystemProperty(resolver, CONSOLE_LOG_PATTERN, "logging.pattern.console");
setSystemProperty(resolver, CONSOLE_LOG_CHARSET, "logging.charset.console", getDefaultCharset().name());
setSystemProperty(resolver, CONSOLE_LOG_THRESHOLD, "logging.threshold.console");
setSystemProperty(resolver, LOG_DATEFORMAT_PATTERN, "logging.pattern.dateformat");
setSystemProperty(resolver, FILE_LOG_PATTERN, "logging.pattern.file");
setSystemProperty(resolver, FILE_LOG_CHARSET, "logging.charset.file", getDefaultCharset().name());
setSystemProperty(resolver, FILE_LOG_THRESHOLD, "logging.threshold.file");
setSystemProperty(resolver, LOG_LEVEL_PATTERN, "logging.pattern.level");
if (logFile != null) {
logFile.applyToSystemProperties();
}
}
private PropertyResolver getPropertyResolver() {
if (this.environment instanceof ConfigurableEnvironment configurableEnvironment) {
PropertySourcesPropertyResolver resolver = new PropertySourcesPropertyResolver(
@ -171,10 +207,59 @@ public class LoggingSystemProperties {
return this.environment;
}
protected void apply(LogFile logFile, PropertyResolver resolver) {
String defaultCharsetName = getDefaultCharset().name();
setSystemProperty(LoggingSystemProperty.PID, new ApplicationPid().toString());
setSystemProperty(LoggingSystemProperty.CONSOLE_CHARSET, resolver, defaultCharsetName);
setSystemProperty(LoggingSystemProperty.FILE_CHARSET, resolver, defaultCharsetName);
setSystemProperty(LoggingSystemProperty.CONSOLE_THRESHOLD, resolver);
setSystemProperty(LoggingSystemProperty.FILE_THRESHOLD, resolver);
setSystemProperty(LoggingSystemProperty.EXCEPTION_CONVERSION_WORD, resolver);
setSystemProperty(LoggingSystemProperty.CONSOLE_PATTERN, resolver);
setSystemProperty(LoggingSystemProperty.FILE_PATTERN, resolver);
setSystemProperty(LoggingSystemProperty.LEVEL_PATTERN, resolver);
setSystemProperty(LoggingSystemProperty.DATEFORMAT_PATTERN, resolver);
if (logFile != null) {
logFile.applyToSystemProperties();
}
}
private void setSystemProperty(LoggingSystemProperty property, PropertyResolver resolver) {
setSystemProperty(property, resolver, null);
}
private void setSystemProperty(LoggingSystemProperty property, PropertyResolver resolver, String defaultValue) {
String value = (property.getApplicationPropertyName() != null)
? resolver.getProperty(property.getApplicationPropertyName()) : null;
value = (value != null) ? value : defaultValue;
setSystemProperty(property.getEnvironmentVariableName(), value);
}
private void setSystemProperty(LoggingSystemProperty property, String value) {
setSystemProperty(property.getEnvironmentVariableName(), value);
}
/**
* Set a system property.
* @param resolver the resolver used to get the property value
* @param systemPropertyName the system property name
* @param propertyName the application property name
* @deprecated since 3.2.0 for removal in 3.4.0 with no replacement
*/
@Deprecated(since = "3.2.0", forRemoval = true)
protected final void setSystemProperty(PropertyResolver resolver, String systemPropertyName, String propertyName) {
setSystemProperty(resolver, systemPropertyName, propertyName, null);
}
/**
* Set a system property.
* @param resolver the resolver used to get the property value
* @param systemPropertyName the system property name
* @param propertyName the application property name
* @param defaultValue the default value if none can be resolved
* @deprecated since 3.2.0 for removal in 3.4.0 with no replacement
*/
@Deprecated(since = "3.2.0", forRemoval = true)
protected final void setSystemProperty(PropertyResolver resolver, String systemPropertyName, String propertyName,
String defaultValue) {
String value = resolver.getProperty(propertyName);
@ -182,6 +267,11 @@ public class LoggingSystemProperties {
setSystemProperty(systemPropertyName, value);
}
/**
* Set a system property.
* @param name the property name
* @param value the value
*/
protected final void setSystemProperty(String name, String value) {
this.setter.accept(name, value);
}

@ -0,0 +1,113 @@
/*
* Copyright 2012-2023 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.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.boot.logging;
/**
* Logging system properties that can later be used by log configuration files.
*
* @author Phillip Webb
* @since 3.2.0
* @see LoggingSystemProperties
*/
public enum LoggingSystemProperty {
/**
* Logging system property for the process ID.
*/
PID("PID"),
/**
* Logging system property for the log file.
*/
LOG_FILE("LOG_FILE"),
/**
* Logging system property for the log path.
*/
LOG_PATH("LOG_PATH"),
/**
* Logging system property for the console log charset.
*/
CONSOLE_CHARSET("CONSOLE_LOG_CHARSET", "logging.charset.console"),
/**
* Logging system property for the file log charset.
*/
FILE_CHARSET("FILE_LOG_CHARSET", "logging.charset.file"),
/**
* Logging system property for the console log.
*/
CONSOLE_THRESHOLD("CONSOLE_LOG_THRESHOLD", "logging.threshold.console"),
/**
* Logging system property for the file log.
*/
FILE_THRESHOLD("FILE_LOG_THRESHOLD", "logging.threshold.file"),
/**
* Logging system property for the exception conversion word.
*/
EXCEPTION_CONVERSION_WORD("LOG_EXCEPTION_CONVERSION_WORD", "logging.exception-conversion-word"),
/**
* Logging system property for the console log pattern.
*/
CONSOLE_PATTERN("CONSOLE_LOG_PATTERN", "logging.pattern.console"),
/**
* Logging system property for the file log pattern.
*/
FILE_PATTERN("FILE_LOG_PATTERN", "logging.pattern.file"),
/**
* Logging system property for the log level pattern.
*/
LEVEL_PATTERN("LOG_LEVEL_PATTERN", "logging.pattern.level"),
/**
* Logging system property for the date-format pattern.
*/
DATEFORMAT_PATTERN("LOG_DATEFORMAT_PATTERN", "logging.pattern.dateformat");
private final String environmentVariableName;
private final String applicationPropertyName;
LoggingSystemProperty(String environmentVariableName) {
this(environmentVariableName, null);
}
LoggingSystemProperty(String environmentVariableName, String applicationPropertyName) {
this.environmentVariableName = environmentVariableName;
this.applicationPropertyName = applicationPropertyName;
}
/**
* Return the name of environment variable that can be used to access this property.
* @return the environment variable name
*/
public String getEnvironmentVariableName() {
return this.environmentVariableName;
}
String getApplicationPropertyName() {
return this.applicationPropertyName;
}
}

@ -1,5 +1,5 @@
/*
* Copyright 2012-2019 the original author or authors.
* Copyright 2012-2023 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.
@ -22,7 +22,7 @@ import java.util.Date;
import java.util.logging.Formatter;
import java.util.logging.LogRecord;
import org.springframework.boot.logging.LoggingSystemProperties;
import org.springframework.boot.logging.LoggingSystemProperty;
/**
* Simple 'Java Logging' {@link Formatter}.
@ -36,7 +36,7 @@ public class SimpleFormatter extends Formatter {
private final String format = getOrUseDefault("LOG_FORMAT", DEFAULT_FORMAT);
private final String pid = getOrUseDefault(LoggingSystemProperties.PID_KEY, "????");
private final String pid = getOrUseDefault(LoggingSystemProperty.PID.getEnvironmentVariableName(), "????");
private final Date date = new Date();

@ -1,5 +1,5 @@
/*
* Copyright 2012-2022 the original author or authors.
* Copyright 2012-2023 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.
@ -35,6 +35,7 @@ import org.springframework.util.unit.DataSize;
*
* @author Phillip Webb
* @since 2.4.0
* @see RollingPolicySystemProperty
*/
public class LogbackLoggingSystemProperties extends LoggingSystemProperties {
@ -44,28 +45,53 @@ public class LogbackLoggingSystemProperties extends LoggingSystemProperties {
/**
* The name of the System property that contains the rolled-over log file name
* pattern.
* @deprecated since 3.2.0 for removal in 3.4.0 in favor of calling
* {@link RollingPolicySystemProperty#getEnvironmentVariableName()} on
* {@link RollingPolicySystemProperty#FILE_NAME_PATTERN}
*/
public static final String ROLLINGPOLICY_FILE_NAME_PATTERN = "LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN";
@Deprecated(since = "3.2.0", forRemoval = true)
public static final String ROLLINGPOLICY_FILE_NAME_PATTERN = RollingPolicySystemProperty.FILE_NAME_PATTERN
.getEnvironmentVariableName();
/**
* The name of the System property that contains the clean history on start flag.
* @deprecated since 3.2.0 for removal in 3.4.0 in favor of calling
* {@link RollingPolicySystemProperty#getEnvironmentVariableName()} on
* {@link RollingPolicySystemProperty#CLEAN_HISTORY_ON_START}
*/
public static final String ROLLINGPOLICY_CLEAN_HISTORY_ON_START = "LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START";
@Deprecated(since = "3.2.0", forRemoval = true)
public static final String ROLLINGPOLICY_CLEAN_HISTORY_ON_START = RollingPolicySystemProperty.CLEAN_HISTORY_ON_START
.getEnvironmentVariableName();
/**
* The name of the System property that contains the file log max size.
* @deprecated since 3.2.0 for removal in 3.4.0 in favor of calling
* {@link RollingPolicySystemProperty#getEnvironmentVariableName()} on
* {@link RollingPolicySystemProperty#MAX_FILE_SIZE}
*/
public static final String ROLLINGPOLICY_MAX_FILE_SIZE = "LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE";
@Deprecated(since = "3.2.0", forRemoval = true)
public static final String ROLLINGPOLICY_MAX_FILE_SIZE = RollingPolicySystemProperty.MAX_FILE_SIZE
.getEnvironmentVariableName();
/**
* The name of the System property that contains the file total size cap.
* @deprecated since 3.2.0 for removal in 3.4.0 in favor of calling
* {@link RollingPolicySystemProperty#getEnvironmentVariableName()} on
* {@link RollingPolicySystemProperty#TOTAL_SIZE_CAP}
*/
public static final String ROLLINGPOLICY_TOTAL_SIZE_CAP = "LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP";
@Deprecated(since = "3.2.0", forRemoval = true)
public static final String ROLLINGPOLICY_TOTAL_SIZE_CAP = RollingPolicySystemProperty.TOTAL_SIZE_CAP
.getEnvironmentVariableName();
/**
* The name of the System property that contains the file log max history.
* @deprecated since 3.2.0 for removal in 3.4.0 in favor of calling
* {@link RollingPolicySystemProperty#getEnvironmentVariableName()} on
* {@link RollingPolicySystemProperty#MAX_HISTORY}
*/
public static final String ROLLINGPOLICY_MAX_HISTORY = "LOGBACK_ROLLINGPOLICY_MAX_HISTORY";
@Deprecated(since = "3.2.0", forRemoval = true)
public static final String ROLLINGPOLICY_MAX_HISTORY = RollingPolicySystemProperty.MAX_HISTORY
.getEnvironmentVariableName();
public LogbackLoggingSystemProperties(Environment environment) {
super(environment);
@ -100,32 +126,24 @@ public class LogbackLoggingSystemProperties extends LoggingSystemProperties {
}
private void applyRollingPolicyProperties(PropertyResolver resolver) {
applyRollingPolicy(resolver, ROLLINGPOLICY_FILE_NAME_PATTERN, "logging.logback.rollingpolicy.file-name-pattern",
"logging.pattern.rolling-file-name");
applyRollingPolicy(resolver, ROLLINGPOLICY_CLEAN_HISTORY_ON_START,
"logging.logback.rollingpolicy.clean-history-on-start", "logging.file.clean-history-on-start");
applyRollingPolicy(resolver, ROLLINGPOLICY_MAX_FILE_SIZE, "logging.logback.rollingpolicy.max-file-size",
"logging.file.max-size", DataSize.class);
applyRollingPolicy(resolver, ROLLINGPOLICY_TOTAL_SIZE_CAP, "logging.logback.rollingpolicy.total-size-cap",
"logging.file.total-size-cap", DataSize.class);
applyRollingPolicy(resolver, ROLLINGPOLICY_MAX_HISTORY, "logging.logback.rollingpolicy.max-history",
"logging.file.max-history");
applyRollingPolicy(RollingPolicySystemProperty.FILE_NAME_PATTERN, resolver);
applyRollingPolicy(RollingPolicySystemProperty.CLEAN_HISTORY_ON_START, resolver);
applyRollingPolicy(RollingPolicySystemProperty.MAX_FILE_SIZE, resolver, DataSize.class);
applyRollingPolicy(RollingPolicySystemProperty.TOTAL_SIZE_CAP, resolver, DataSize.class);
applyRollingPolicy(RollingPolicySystemProperty.MAX_HISTORY, resolver);
}
private void applyRollingPolicy(PropertyResolver resolver, String systemPropertyName, String propertyName,
String deprecatedPropertyName) {
applyRollingPolicy(resolver, systemPropertyName, propertyName, deprecatedPropertyName, String.class);
private void applyRollingPolicy(RollingPolicySystemProperty property, PropertyResolver resolver) {
applyRollingPolicy(property, resolver, String.class);
}
private <T> void applyRollingPolicy(PropertyResolver resolver, String systemPropertyName, String propertyName,
String deprecatedPropertyName, Class<T> type) {
T value = getProperty(resolver, propertyName, type);
if (value == null) {
value = getProperty(resolver, deprecatedPropertyName, type);
}
private <T> void applyRollingPolicy(RollingPolicySystemProperty property, PropertyResolver resolver,
Class<T> type) {
T value = getProperty(resolver, property.getApplicationPropertyName(), type);
value = (value != null) ? value : getProperty(resolver, property.getDeprecatedApplicationPropertyName(), type);
if (value != null) {
String stringValue = String.valueOf((value instanceof DataSize dataSize) ? dataSize.toBytes() : value);
setSystemProperty(systemPropertyName, stringValue);
setSystemProperty(property.getEnvironmentVariableName(), stringValue);
}
}

@ -0,0 +1,82 @@
/*
* Copyright 2012-2023 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.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.boot.logging.logback;
/**
* Logback rolling policy system properties that can later be used by log configuration
* files.
*
* @author Phillip Webb
* @since 3.2.0
* @see LogbackLoggingSystemProperties
*/
public enum RollingPolicySystemProperty {
/**
* Logging system property for the rolled-over log file name pattern.
*/
FILE_NAME_PATTERN("file-name-pattern", "logging.pattern.rolling-file-name"),
/**
* Logging system property for the clean history on start flag.
*/
CLEAN_HISTORY_ON_START("clean-history-on-start", "logging.file.clean-history-on-start"),
/**
* Logging system property for the file log max size.
*/
MAX_FILE_SIZE("max-file-size", "logging.file.max-size"),
/**
* Logging system property for the file total size cap.
*/
TOTAL_SIZE_CAP("total-size-cap", "logging.file.total-size-cap"),
/**
* Logging system property for the file log max history.
*/
MAX_HISTORY("max-history", "logging.file.max-history");
private final String environmentVariableName;
private final String applicationPropertyName;
private final String deprecatedApplicationPropertyName;
RollingPolicySystemProperty(String applicationPropertyName, String deprecatedApplicationPropertyName) {
this.environmentVariableName = "LOGBACK_ROLLINGPOLICY_" + name();
this.applicationPropertyName = "logging.logback.rollingpolicy." + applicationPropertyName;
this.deprecatedApplicationPropertyName = deprecatedApplicationPropertyName;
}
/**
* Return the name of environment variable that can be used to access this property.
* @return the environment variable name
*/
public String getEnvironmentVariableName() {
return this.environmentVariableName;
}
String getApplicationPropertyName() {
return this.applicationPropertyName;
}
String getDeprecatedApplicationPropertyName() {
return this.deprecatedApplicationPropertyName;
}
}

@ -30,7 +30,7 @@ import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.event.ApplicationStartingEvent;
import org.springframework.boot.logging.LogFile;
import org.springframework.boot.logging.LoggingSystem;
import org.springframework.boot.logging.LoggingSystemProperties;
import org.springframework.boot.logging.LoggingSystemProperty;
import org.springframework.boot.testsupport.system.CapturedOutput;
import org.springframework.boot.testsupport.system.OutputCaptureExtension;
import org.springframework.context.ApplicationListener;
@ -69,7 +69,7 @@ class LoggingApplicationListenerIntegrationTests {
assertThat(service.logFile).hasToString(logFile);
}
finally {
System.clearProperty(LoggingSystemProperties.LOG_FILE);
System.clearProperty(LoggingSystemProperty.LOG_FILE.getEnvironmentVariableName());
}
}

@ -58,7 +58,7 @@ import org.springframework.boot.logging.LoggerConfiguration;
import org.springframework.boot.logging.LoggerGroups;
import org.springframework.boot.logging.LoggingInitializationContext;
import org.springframework.boot.logging.LoggingSystem;
import org.springframework.boot.logging.LoggingSystemProperties;
import org.springframework.boot.logging.LoggingSystemProperty;
import org.springframework.boot.logging.java.JavaLoggingSystem;
import org.springframework.boot.system.ApplicationPid;
import org.springframework.boot.testsupport.classpath.ClassPathExclusions;
@ -470,13 +470,13 @@ class LoggingApplicationListenerTests {
"logging.pattern.file=file", "logging.pattern.level=level",
"logging.pattern.rolling-file-name=my.log.%d{yyyyMMdd}.%i.gz");
this.listener.initialize(this.context.getEnvironment(), this.context.getClassLoader());
assertThat(System.getProperty(LoggingSystemProperties.CONSOLE_LOG_PATTERN)).isEqualTo("console");
assertThat(System.getProperty(LoggingSystemProperties.FILE_LOG_PATTERN)).isEqualTo("file");
assertThat(System.getProperty(LoggingSystemProperties.EXCEPTION_CONVERSION_WORD)).isEqualTo("conversion");
assertThat(System.getProperty(LoggingSystemProperties.LOG_FILE)).isEqualTo(this.logFile.getAbsolutePath());
assertThat(System.getProperty(LoggingSystemProperties.LOG_LEVEL_PATTERN)).isEqualTo("level");
assertThat(System.getProperty(LoggingSystemProperties.LOG_PATH)).isEqualTo("path");
assertThat(System.getProperty(LoggingSystemProperties.PID_KEY)).isNotNull();
assertThat(getSystemProperty(LoggingSystemProperty.CONSOLE_PATTERN)).isEqualTo("console");
assertThat(getSystemProperty(LoggingSystemProperty.FILE_PATTERN)).isEqualTo("file");
assertThat(getSystemProperty(LoggingSystemProperty.EXCEPTION_CONVERSION_WORD)).isEqualTo("conversion");
assertThat(getSystemProperty(LoggingSystemProperty.LOG_FILE)).isEqualTo(this.logFile.getAbsolutePath());
assertThat(getSystemProperty(LoggingSystemProperty.LEVEL_PATTERN)).isEqualTo("level");
assertThat(getSystemProperty(LoggingSystemProperty.LOG_PATH)).isEqualTo("path");
assertThat(getSystemProperty(LoggingSystemProperty.PID)).isNotNull();
}
@Test
@ -484,15 +484,14 @@ class LoggingApplicationListenerTests {
// gh-7719
addPropertiesToEnvironment(this.context, "logging.pattern.console=console ${doesnotexist}");
this.listener.initialize(this.context.getEnvironment(), this.context.getClassLoader());
assertThat(System.getProperty(LoggingSystemProperties.CONSOLE_LOG_PATTERN))
.isEqualTo("console ${doesnotexist}");
assertThat(getSystemProperty(LoggingSystemProperty.CONSOLE_PATTERN)).isEqualTo("console ${doesnotexist}");
}
@Test
void environmentPropertiesResolvePlaceholders() {
addPropertiesToEnvironment(this.context, "logging.pattern.console=console ${pid}");
this.listener.initialize(this.context.getEnvironment(), this.context.getClassLoader());
assertThat(System.getProperty(LoggingSystemProperties.CONSOLE_LOG_PATTERN))
assertThat(getSystemProperty(LoggingSystemProperty.CONSOLE_PATTERN))
.isEqualTo(this.context.getEnvironment().getProperty("logging.pattern.console"));
}
@ -500,7 +499,7 @@ class LoggingApplicationListenerTests {
void logFilePropertiesCanReferenceSystemProperties() {
addPropertiesToEnvironment(this.context, "logging.file.name=" + this.tempDir + "${PID}.log");
this.listener.initialize(this.context.getEnvironment(), this.context.getClassLoader());
assertThat(System.getProperty(LoggingSystemProperties.LOG_FILE))
assertThat(getSystemProperty(LoggingSystemProperty.LOG_FILE))
.isEqualTo(this.tempDir + new ApplicationPid().toString() + ".log");
}
@ -575,6 +574,10 @@ class LoggingApplicationListenerTests {
assertTraceEnabled("com.foo.baz", true);
}
private String getSystemProperty(LoggingSystemProperty property) {
return System.getProperty(property.getEnvironmentVariableName());
}
private void assertTraceEnabled(String name, boolean expected) {
assertThat(this.loggerContext.getLogger(name).isTraceEnabled()).isEqualTo(expected);
}

@ -1,5 +1,5 @@
/*
* Copyright 2012-2020 the original author or authors.
* Copyright 2012-2023 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.
@ -50,8 +50,9 @@ public abstract class AbstractLoggingSystemTests {
@AfterEach
void clear() {
System.clearProperty(LoggingSystemProperties.LOG_FILE);
System.clearProperty(LoggingSystemProperties.PID_KEY);
for (LoggingSystemProperty property : LoggingSystemProperty.values()) {
System.getProperties().remove(property.getEnvironmentVariableName());
}
}
protected final String[] getSpringConfigLocations(AbstractLoggingSystem system) {

@ -57,8 +57,9 @@ class LogFileTests {
Properties properties = new Properties();
logFile.applyTo(properties);
assertThat(logFile).hasToString("log.file");
assertThat(properties.getProperty(LoggingSystemProperties.LOG_FILE)).isEqualTo("log.file");
assertThat(properties.getProperty(LoggingSystemProperties.LOG_PATH)).isNull();
assertThat(properties.getProperty(LoggingSystemProperty.LOG_FILE.getEnvironmentVariableName()))
.isEqualTo("log.file");
assertThat(properties.getProperty(LoggingSystemProperty.LOG_PATH.getEnvironmentVariableName())).isNull();
}
@Test
@ -72,9 +73,10 @@ class LogFileTests {
Properties properties = new Properties();
logFile.applyTo(properties);
assertThat(logFile).hasToString("logpath" + File.separatorChar + "spring.log");
assertThat(properties.getProperty(LoggingSystemProperties.LOG_FILE))
assertThat(properties.getProperty(LoggingSystemProperty.LOG_FILE.getEnvironmentVariableName()))
.isEqualTo("logpath" + File.separatorChar + "spring.log");
assertThat(properties.getProperty(LoggingSystemProperties.LOG_PATH)).isEqualTo("logpath");
assertThat(properties.getProperty(LoggingSystemProperty.LOG_PATH.getEnvironmentVariableName()))
.isEqualTo("logpath");
}
@Test
@ -91,8 +93,10 @@ class LogFileTests {
Properties properties = new Properties();
logFile.applyTo(properties);
assertThat(logFile).hasToString("log.file");
assertThat(properties.getProperty(LoggingSystemProperties.LOG_FILE)).isEqualTo("log.file");
assertThat(properties.getProperty(LoggingSystemProperties.LOG_PATH)).isEqualTo("logpath");
assertThat(properties.getProperty(LoggingSystemProperty.LOG_FILE.getEnvironmentVariableName()))
.isEqualTo("log.file");
assertThat(properties.getProperty(LoggingSystemProperty.LOG_PATH.getEnvironmentVariableName()))
.isEqualTo("logpath");
}
private PropertyResolver getPropertyResolver(Map<String, Object> properties) {

@ -43,8 +43,9 @@ class LoggingSystemPropertiesTests {
@BeforeEach
void captureSystemPropertyNames() {
System.getProperties().remove(LoggingSystemProperties.CONSOLE_LOG_CHARSET);
System.getProperties().remove(LoggingSystemProperties.FILE_LOG_CHARSET);
for (LoggingSystemProperty property : LoggingSystemProperty.values()) {
System.getProperties().remove(property.getEnvironmentVariableName());
}
this.systemPropertyNames = new HashSet<>(System.getProperties().keySet());
}
@ -56,58 +57,62 @@ class LoggingSystemPropertiesTests {
@Test
void pidIsSet() {
new LoggingSystemProperties(new MockEnvironment()).apply(null);
assertThat(System.getProperty(LoggingSystemProperties.PID_KEY)).isNotNull();
assertThat(getSystemProperty(LoggingSystemProperty.PID)).isNotNull();
}
@Test
void consoleLogPatternIsSet() {
new LoggingSystemProperties(new MockEnvironment().withProperty("logging.pattern.console", "console pattern"))
.apply(null);
assertThat(System.getProperty(LoggingSystemProperties.CONSOLE_LOG_PATTERN)).isEqualTo("console pattern");
assertThat(getSystemProperty(LoggingSystemProperty.CONSOLE_PATTERN)).isEqualTo("console pattern");
}
@Test
void consoleCharsetWhenNoPropertyUsesUtf8() {
new LoggingSystemProperties(new MockEnvironment()).apply(null);
assertThat(System.getProperty(LoggingSystemProperties.CONSOLE_LOG_CHARSET)).isEqualTo("UTF-8");
assertThat(getSystemProperty(LoggingSystemProperty.CONSOLE_CHARSET)).isEqualTo("UTF-8");
}
@Test
void consoleCharsetIsSet() {
new LoggingSystemProperties(new MockEnvironment().withProperty("logging.charset.console", "UTF-16"))
.apply(null);
assertThat(System.getProperty(LoggingSystemProperties.CONSOLE_LOG_CHARSET)).isEqualTo("UTF-16");
assertThat(getSystemProperty(LoggingSystemProperty.CONSOLE_CHARSET)).isEqualTo("UTF-16");
}
@Test
void fileLogPatternIsSet() {
new LoggingSystemProperties(new MockEnvironment().withProperty("logging.pattern.file", "file pattern"))
.apply(null);
assertThat(System.getProperty(LoggingSystemProperties.FILE_LOG_PATTERN)).isEqualTo("file pattern");
assertThat(getSystemProperty(LoggingSystemProperty.FILE_PATTERN)).isEqualTo("file pattern");
}
@Test
void fileCharsetWhenNoPropertyUsesUtf8() {
new LoggingSystemProperties(new MockEnvironment()).apply(null);
assertThat(System.getProperty(LoggingSystemProperties.FILE_LOG_CHARSET)).isEqualTo("UTF-8");
assertThat(getSystemProperty(LoggingSystemProperty.FILE_CHARSET)).isEqualTo("UTF-8");
}
@Test
void fileCharsetIsSet() {
new LoggingSystemProperties(new MockEnvironment().withProperty("logging.charset.file", "UTF-16")).apply(null);
assertThat(System.getProperty(LoggingSystemProperties.FILE_LOG_CHARSET)).isEqualTo("UTF-16");
assertThat(getSystemProperty(LoggingSystemProperty.FILE_CHARSET)).isEqualTo("UTF-16");
}
@Test
void consoleLogPatternCanReferencePid() {
new LoggingSystemProperties(environment("logging.pattern.console", "${PID:unknown}")).apply(null);
assertThat(System.getProperty(LoggingSystemProperties.CONSOLE_LOG_PATTERN)).matches("[0-9]+");
assertThat(getSystemProperty(LoggingSystemProperty.CONSOLE_PATTERN)).matches("[0-9]+");
}
@Test
void fileLogPatternCanReferencePid() {
new LoggingSystemProperties(environment("logging.pattern.file", "${PID:unknown}")).apply(null);
assertThat(System.getProperty(LoggingSystemProperties.FILE_LOG_PATTERN)).matches("[0-9]+");
assertThat(getSystemProperty(LoggingSystemProperty.FILE_PATTERN)).matches("[0-9]+");
}
private String getSystemProperty(LoggingSystemProperty property) {
return System.getProperty(property.getEnvironmentVariableName());
}
private Environment environment(String key, Object value) {

@ -33,7 +33,7 @@ import org.springframework.boot.logging.AbstractLoggingSystemTests;
import org.springframework.boot.logging.LogLevel;
import org.springframework.boot.logging.LoggerConfiguration;
import org.springframework.boot.logging.LoggingSystem;
import org.springframework.boot.logging.LoggingSystemProperties;
import org.springframework.boot.logging.LoggingSystemProperty;
import org.springframework.boot.testsupport.system.CapturedOutput;
import org.springframework.boot.testsupport.system.OutputCaptureExtension;
import org.springframework.util.ClassUtils;
@ -113,7 +113,7 @@ class JavaLoggingSystemTests extends AbstractLoggingSystemTests {
@Test
void testSystemPropertyInitializesFormat(CapturedOutput output) {
System.setProperty(LoggingSystemProperties.PID_KEY, "1234");
System.setProperty(LoggingSystemProperty.PID.getEnvironmentVariableName(), "1234");
this.loggingSystem.beforeInitialize();
this.loggingSystem.initialize(null,
"classpath:" + ClassUtils.addResourcePathToPackagePath(getClass(), "logging.properties"), null);

@ -53,7 +53,7 @@ import org.springframework.boot.logging.LogLevel;
import org.springframework.boot.logging.LoggerConfiguration;
import org.springframework.boot.logging.LoggingInitializationContext;
import org.springframework.boot.logging.LoggingSystem;
import org.springframework.boot.logging.LoggingSystemProperties;
import org.springframework.boot.logging.LoggingSystemProperty;
import org.springframework.boot.testsupport.classpath.ClassPathExclusions;
import org.springframework.boot.testsupport.logging.ConfigureClasspathToPreferLog4j2;
import org.springframework.boot.testsupport.system.CapturedOutput;
@ -361,7 +361,7 @@ class Log4J2LoggingSystemTests extends AbstractLoggingSystemTests {
@Test
void customExceptionConversionWord(CapturedOutput output) {
System.setProperty(LoggingSystemProperties.EXCEPTION_CONVERSION_WORD, "%ex");
System.setProperty(LoggingSystemProperty.EXCEPTION_CONVERSION_WORD.getEnvironmentVariableName(), "%ex");
try {
this.loggingSystem.beforeInitialize();
this.logger.info("Hidden");
@ -373,7 +373,7 @@ class Log4J2LoggingSystemTests extends AbstractLoggingSystemTests {
assertThat(output).contains("java.lang.RuntimeException: Expected").doesNotContain("Wrapped by:");
}
finally {
System.clearProperty(LoggingSystemProperties.EXCEPTION_CONVERSION_WORD);
System.clearProperty(LoggingSystemProperty.EXCEPTION_CONVERSION_WORD.getEnvironmentVariableName());
}
}

@ -1,5 +1,5 @@
/*
* Copyright 2012-2022 the original author or authors.
* Copyright 2012-2023 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.
@ -23,7 +23,7 @@ import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import org.springframework.boot.logging.LoggingSystemProperties;
import org.springframework.boot.logging.LoggingSystemProperty;
import static org.assertj.core.api.Assertions.assertThat;
@ -42,7 +42,9 @@ class Log4j2FileXmlTests extends Log4j2XmlTests {
@AfterEach
void stopConfiguration() {
super.stopConfiguration();
System.clearProperty(LoggingSystemProperties.LOG_FILE);
for (LoggingSystemProperty property : LoggingSystemProperty.values()) {
System.getProperties().remove(property.getEnvironmentVariableName());
}
}
@Test
@ -52,7 +54,7 @@ class Log4j2FileXmlTests extends Log4j2XmlTests {
@Test
void whenLogExceptionConversionWordIsSetThenFileAppenderUsesIt() {
withSystemProperty(LoggingSystemProperties.EXCEPTION_CONVERSION_WORD, "custom",
withSystemProperty(LoggingSystemProperty.EXCEPTION_CONVERSION_WORD.getEnvironmentVariableName(), "custom",
() -> assertThat(fileAppenderPattern()).contains("custom"));
}
@ -63,7 +65,7 @@ class Log4j2FileXmlTests extends Log4j2XmlTests {
@Test
void whenLogLevelPatternIsSetThenFileAppenderUsesIt() {
withSystemProperty(LoggingSystemProperties.LOG_LEVEL_PATTERN, "custom",
withSystemProperty(LoggingSystemProperty.LEVEL_PATTERN.getEnvironmentVariableName(), "custom",
() -> assertThat(fileAppenderPattern()).contains("custom"));
}
@ -74,7 +76,7 @@ class Log4j2FileXmlTests extends Log4j2XmlTests {
@Test
void whenLogDateformatPatternIsSetThenFileAppenderUsesIt() {
withSystemProperty(LoggingSystemProperties.LOG_DATEFORMAT_PATTERN, "dd-MM-yyyy",
withSystemProperty(LoggingSystemProperty.DATEFORMAT_PATTERN.getEnvironmentVariableName(), "dd-MM-yyyy",
() -> assertThat(fileAppenderPattern()).contains("dd-MM-yyyy"));
}
@ -85,7 +87,8 @@ class Log4j2FileXmlTests extends Log4j2XmlTests {
@Override
protected void prepareConfiguration() {
System.setProperty(LoggingSystemProperties.LOG_FILE, new File(this.temp, "test.log").getAbsolutePath());
System.setProperty(LoggingSystemProperty.LOG_FILE.getEnvironmentVariableName(),
new File(this.temp, "test.log").getAbsolutePath());
super.prepareConfiguration();
}

@ -27,7 +27,7 @@ import org.apache.logging.log4j.core.layout.PatternLayout;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.logging.LoggingSystemProperties;
import org.springframework.boot.logging.LoggingSystemProperty;
import static org.assertj.core.api.Assertions.assertThat;
@ -53,7 +53,7 @@ class Log4j2XmlTests {
@Test
void whenLogExceptionConversionWordIsSetThenConsoleUsesIt() {
withSystemProperty(LoggingSystemProperties.EXCEPTION_CONVERSION_WORD, "custom",
withSystemProperty(LoggingSystemProperty.EXCEPTION_CONVERSION_WORD.getEnvironmentVariableName(), "custom",
() -> assertThat(consolePattern()).contains("custom"));
}
@ -64,7 +64,7 @@ class Log4j2XmlTests {
@Test
void whenLogLevelPatternIsSetThenConsoleUsesIt() {
withSystemProperty(LoggingSystemProperties.LOG_LEVEL_PATTERN, "custom",
withSystemProperty(LoggingSystemProperty.LEVEL_PATTERN.getEnvironmentVariableName(), "custom",
() -> assertThat(consolePattern()).contains("custom"));
}
@ -75,7 +75,7 @@ class Log4j2XmlTests {
@Test
void whenLogDateformatPatternIsSetThenConsoleUsesIt() {
withSystemProperty(LoggingSystemProperties.LOG_DATEFORMAT_PATTERN, "dd-MM-yyyy",
withSystemProperty(LoggingSystemProperty.DATEFORMAT_PATTERN.getEnvironmentVariableName(), "dd-MM-yyyy",
() -> assertThat(consolePattern()).contains("dd-MM-yyyy"));
}

@ -26,6 +26,7 @@ import org.junit.jupiter.api.Test;
import org.springframework.boot.convert.ApplicationConversionService;
import org.springframework.boot.logging.LoggingSystemProperties;
import org.springframework.boot.logging.LoggingSystemProperty;
import org.springframework.core.convert.support.ConfigurableConversionService;
import org.springframework.mock.env.MockEnvironment;
@ -44,8 +45,9 @@ class LogbackLoggingSystemPropertiesTests {
@BeforeEach
void captureSystemPropertyNames() {
System.getProperties().remove(LoggingSystemProperties.CONSOLE_LOG_CHARSET);
System.getProperties().remove(LoggingSystemProperties.FILE_LOG_CHARSET);
for (LoggingSystemProperty property : LoggingSystemProperty.values()) {
System.getProperties().remove(property.getEnvironmentVariableName());
}
this.systemPropertyNames = new HashSet<>(System.getProperties().keySet());
this.environment = new MockEnvironment();
this.environment
@ -62,7 +64,8 @@ class LogbackLoggingSystemPropertiesTests {
void applySetsStandardSystemProperties() {
this.environment.setProperty("logging.pattern.console", "boot");
new LogbackLoggingSystemProperties(this.environment).apply();
assertThat(System.getProperties()).containsEntry(LoggingSystemProperties.CONSOLE_LOG_PATTERN, "boot");
assertThat(System.getProperties())
.containsEntry(LoggingSystemProperty.CONSOLE_PATTERN.getEnvironmentVariableName(), "boot");
}
@Test
@ -74,11 +77,11 @@ class LogbackLoggingSystemPropertiesTests {
this.environment.setProperty("logging.logback.rollingpolicy.max-history", "mh");
new LogbackLoggingSystemProperties(this.environment).apply();
assertThat(System.getProperties())
.containsEntry(LogbackLoggingSystemProperties.ROLLINGPOLICY_FILE_NAME_PATTERN, "fnp")
.containsEntry(LogbackLoggingSystemProperties.ROLLINGPOLICY_CLEAN_HISTORY_ON_START, "chos")
.containsEntry(LogbackLoggingSystemProperties.ROLLINGPOLICY_MAX_FILE_SIZE, "1024")
.containsEntry(LogbackLoggingSystemProperties.ROLLINGPOLICY_TOTAL_SIZE_CAP, "2048")
.containsEntry(LogbackLoggingSystemProperties.ROLLINGPOLICY_MAX_HISTORY, "mh");
.containsEntry(RollingPolicySystemProperty.FILE_NAME_PATTERN.getEnvironmentVariableName(), "fnp")
.containsEntry(RollingPolicySystemProperty.CLEAN_HISTORY_ON_START.getEnvironmentVariableName(), "chos")
.containsEntry(RollingPolicySystemProperty.MAX_FILE_SIZE.getEnvironmentVariableName(), "1024")
.containsEntry(RollingPolicySystemProperty.TOTAL_SIZE_CAP.getEnvironmentVariableName(), "2048")
.containsEntry(RollingPolicySystemProperty.MAX_HISTORY.getEnvironmentVariableName(), "mh");
}
@Test
@ -90,24 +93,24 @@ class LogbackLoggingSystemPropertiesTests {
this.environment.setProperty("logging.file.max-history", "mh");
new LogbackLoggingSystemProperties(this.environment).apply();
assertThat(System.getProperties())
.containsEntry(LogbackLoggingSystemProperties.ROLLINGPOLICY_FILE_NAME_PATTERN, "fnp")
.containsEntry(LogbackLoggingSystemProperties.ROLLINGPOLICY_CLEAN_HISTORY_ON_START, "chos")
.containsEntry(LogbackLoggingSystemProperties.ROLLINGPOLICY_MAX_FILE_SIZE, "1024")
.containsEntry(LogbackLoggingSystemProperties.ROLLINGPOLICY_TOTAL_SIZE_CAP, "2048")
.containsEntry(LogbackLoggingSystemProperties.ROLLINGPOLICY_MAX_HISTORY, "mh");
.containsEntry(RollingPolicySystemProperty.FILE_NAME_PATTERN.getEnvironmentVariableName(), "fnp")
.containsEntry(RollingPolicySystemProperty.CLEAN_HISTORY_ON_START.getEnvironmentVariableName(), "chos")
.containsEntry(RollingPolicySystemProperty.MAX_FILE_SIZE.getEnvironmentVariableName(), "1024")
.containsEntry(RollingPolicySystemProperty.TOTAL_SIZE_CAP.getEnvironmentVariableName(), "2048")
.containsEntry(RollingPolicySystemProperty.MAX_HISTORY.getEnvironmentVariableName(), "mh");
}
@Test
void consoleCharsetWhenNoPropertyUsesDefault() {
new LoggingSystemProperties(new MockEnvironment()).apply(null);
assertThat(System.getProperty(LoggingSystemProperties.CONSOLE_LOG_CHARSET))
assertThat(System.getProperty(LoggingSystemProperty.CONSOLE_CHARSET.getEnvironmentVariableName()))
.isEqualTo(Charset.defaultCharset().name());
}
@Test
void fileCharsetWhenNoPropertyUsesDefault() {
new LoggingSystemProperties(new MockEnvironment()).apply(null);
assertThat(System.getProperty(LoggingSystemProperties.FILE_LOG_CHARSET))
assertThat(System.getProperty(LoggingSystemProperty.FILE_CHARSET.getEnvironmentVariableName()))
.isEqualTo(Charset.defaultCharset().name());
}

@ -56,6 +56,7 @@ import org.springframework.boot.logging.LoggerConfiguration;
import org.springframework.boot.logging.LoggingInitializationContext;
import org.springframework.boot.logging.LoggingSystem;
import org.springframework.boot.logging.LoggingSystemProperties;
import org.springframework.boot.logging.LoggingSystemProperty;
import org.springframework.boot.testsupport.classpath.ClassPathOverrides;
import org.springframework.boot.testsupport.system.CapturedOutput;
import org.springframework.boot.testsupport.system.OutputCaptureExtension;
@ -102,8 +103,9 @@ class LogbackLoggingSystemTests extends AbstractLoggingSystemTests {
@BeforeEach
void setup() {
System.getProperties().remove(LoggingSystemProperties.CONSOLE_LOG_CHARSET);
System.getProperties().remove(LoggingSystemProperties.FILE_LOG_CHARSET);
for (LoggingSystemProperty property : LoggingSystemProperty.values()) {
System.getProperties().remove(property.getEnvironmentVariableName());
}
this.systemPropertyNames = new HashSet<>(System.getProperties().keySet());
this.loggingSystem.cleanUp();
this.logger = ((LoggerContext) LoggerFactory.getILoggerFactory()).getLogger(getClass());
@ -503,7 +505,7 @@ class LogbackLoggingSystemTests extends AbstractLoggingSystemTests {
@Test
void customExceptionConversionWord(CapturedOutput output) {
System.setProperty(LoggingSystemProperties.EXCEPTION_CONVERSION_WORD, "%ex");
System.setProperty(LoggingSystemProperty.EXCEPTION_CONVERSION_WORD.getEnvironmentVariableName(), "%ex");
try {
this.loggingSystem.beforeInitialize();
this.logger.info("Hidden");
@ -514,7 +516,7 @@ class LogbackLoggingSystemTests extends AbstractLoggingSystemTests {
assertThat(output).contains("java.lang.RuntimeException: Expected").doesNotContain("Wrapped by:");
}
finally {
System.clearProperty(LoggingSystemProperties.EXCEPTION_CONVERSION_WORD);
System.clearProperty(LoggingSystemProperty.EXCEPTION_CONVERSION_WORD.getEnvironmentVariableName());
}
}
@ -525,7 +527,8 @@ class LogbackLoggingSystemTests extends AbstractLoggingSystemTests {
this.logger.info("Hidden");
LogFile logFile = getLogFile(tmpDir() + "/example.log", null, false);
initialize(this.initializationContext, "classpath:logback-nondefault.xml", logFile);
assertThat(System.getProperty(LoggingSystemProperties.LOG_FILE)).endsWith("example.log");
assertThat(System.getProperty(LoggingSystemProperty.LOG_FILE.getEnvironmentVariableName()))
.endsWith("example.log");
}
@Test

Loading…
Cancel
Save