Polish 'Support 'log4j.configurationFile' system property'
See gh-32730
This commit is contained in:
@@ -73,6 +73,7 @@ import org.springframework.util.StringUtils;
|
||||
* @author Andy Wilkinson
|
||||
* @author Alexander Heusingfeld
|
||||
* @author Ben Hale
|
||||
* @author Ralph Goers
|
||||
* @since 1.2.0
|
||||
*/
|
||||
public class Log4J2LoggingSystem extends AbstractLoggingSystem {
|
||||
@@ -125,37 +126,29 @@ public class Log4J2LoggingSystem extends AbstractLoggingSystem {
|
||||
|
||||
@Override
|
||||
protected String[] getStandardConfigLocations() {
|
||||
return getCurrentlySupportedConfigLocations();
|
||||
}
|
||||
|
||||
private String[] getCurrentlySupportedConfigLocations() {
|
||||
List<String> supportedConfigLocations = new ArrayList<>();
|
||||
addTestFiles(supportedConfigLocations);
|
||||
supportedConfigLocations.add("log4j2.properties");
|
||||
List<String> locations = new ArrayList<>();
|
||||
locations.add("log4j2-test.properties");
|
||||
if (isClassAvailable("com.fasterxml.jackson.dataformat.yaml.YAMLParser")) {
|
||||
Collections.addAll(supportedConfigLocations, "log4j2.yaml", "log4j2.yml");
|
||||
Collections.addAll(locations, "log4j2-test.yaml", "log4j2-test.yml");
|
||||
}
|
||||
if (isClassAvailable("com.fasterxml.jackson.databind.ObjectMapper")) {
|
||||
Collections.addAll(supportedConfigLocations, "log4j2.json", "log4j2.jsn");
|
||||
Collections.addAll(locations, "log4j2-test.json", "log4j2-test.jsn");
|
||||
}
|
||||
supportedConfigLocations.add("log4j2.xml");
|
||||
PropertiesUtil props = new PropertiesUtil(new Properties());
|
||||
String location = props.getStringProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY);
|
||||
if (location != null) {
|
||||
supportedConfigLocations.add(location);
|
||||
}
|
||||
return StringUtils.toStringArray(supportedConfigLocations);
|
||||
}
|
||||
|
||||
private void addTestFiles(List<String> supportedConfigLocations) {
|
||||
supportedConfigLocations.add("log4j2-test.properties");
|
||||
locations.add("log4j2-test.xml");
|
||||
locations.add("log4j2.properties");
|
||||
if (isClassAvailable("com.fasterxml.jackson.dataformat.yaml.YAMLParser")) {
|
||||
Collections.addAll(supportedConfigLocations, "log4j2-test.yaml", "log4j2-test.yml");
|
||||
Collections.addAll(locations, "log4j2.yaml", "log4j2.yml");
|
||||
}
|
||||
if (isClassAvailable("com.fasterxml.jackson.databind.ObjectMapper")) {
|
||||
Collections.addAll(supportedConfigLocations, "log4j2-test.json", "log4j2-test.jsn");
|
||||
Collections.addAll(locations, "log4j2.json", "log4j2.jsn");
|
||||
}
|
||||
supportedConfigLocations.add("log4j2-test.xml");
|
||||
locations.add("log4j2.xml");
|
||||
String propertyDefinedLocation = new PropertiesUtil(new Properties())
|
||||
.getStringProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY);
|
||||
if (propertyDefinedLocation != null) {
|
||||
locations.add(propertyDefinedLocation);
|
||||
}
|
||||
return StringUtils.toStringArray(locations);
|
||||
}
|
||||
|
||||
protected boolean isClassAvailable(String className) {
|
||||
|
||||
@@ -35,6 +35,7 @@ import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.apache.logging.log4j.core.LoggerContext;
|
||||
import org.apache.logging.log4j.core.config.Configuration;
|
||||
import org.apache.logging.log4j.core.config.ConfigurationFactory;
|
||||
import org.apache.logging.log4j.core.config.LoggerConfig;
|
||||
import org.apache.logging.log4j.core.config.Reconfigurable;
|
||||
import org.apache.logging.log4j.core.config.composite.CompositeConfiguration;
|
||||
@@ -295,6 +296,18 @@ class Log4J2LoggingSystemTests extends AbstractLoggingSystemTests {
|
||||
"log4j2.properties", "log4j2.yaml", "log4j2.yml", "log4j2.json", "log4j2.jsn", "log4j2.xml");
|
||||
}
|
||||
|
||||
@Test
|
||||
void configLocationsWithConfigurationFileSystemProperty() {
|
||||
System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY, "custom-log4j2.properties");
|
||||
try {
|
||||
assertThat(this.loggingSystem.getStandardConfigLocations()).contains("log4j2-test.properties",
|
||||
"log4j2-test.xml", "log4j2.properties", "log4j2.xml");
|
||||
}
|
||||
finally {
|
||||
System.clearProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void springConfigLocations() {
|
||||
String[] locations = getSpringConfigLocations(this.loggingSystem);
|
||||
|
||||
Reference in New Issue
Block a user