Polish contribution

- Extract the logic that coerces the string into a LogLevel into a
  separate method.
- Add a test that verifies that false is mapped to LogLevel.OFF

Closes gh-3628
This commit is contained in:
Andy Wilkinson
2015-08-03 16:18:07 +01:00
parent cbd37b583f
commit 838e0ef33e
2 changed files with 20 additions and 6 deletions

View File

@@ -246,18 +246,20 @@ public class LoggingApplicationListener implements SmartApplicationListener {
name = null;
}
level = environment.resolvePlaceholders(level);
if (Boolean.toString(false).equalsIgnoreCase(level)) {
system.setLogLevel(name, LogLevel.OFF);
}
else {
system.setLogLevel(name, LogLevel.valueOf(level.toUpperCase()));
}
system.setLogLevel(name, coerceLogLevel(level));
}
catch (RuntimeException ex) {
this.logger.error("Cannot set level: " + level + " for '" + name + "'");
}
}
private LogLevel coerceLogLevel(String level) {
if ("false".equalsIgnoreCase(level)) {
return LogLevel.OFF;
}
return LogLevel.valueOf(level.toUpperCase());
}
public void setOrder(int order) {
this.order = order;
}

View File

@@ -258,6 +258,18 @@ public class LoggingApplicationListenerTests {
assertThat(this.outputCapture.toString(), not(containsString("testatfatal")));
}
@Test
public void parseLevelsMapsFalseToOff() throws Exception {
EnvironmentTestUtils.addEnvironment(this.context,
"logging.level.org.springframework.boot=false");
this.initializer.initialize(this.context.getEnvironment(),
this.context.getClassLoader());
this.logger.debug("testatdebug");
this.logger.fatal("testatfatal");
assertThat(this.outputCapture.toString(), not(containsString("testatdebug")));
assertThat(this.outputCapture.toString(), not(containsString("testatfatal")));
}
@Test
public void parseArgsDisabled() throws Exception {
this.initializer.setParseArgs(false);