mirror of https://github.com/qos-ch/slf4j
fix incorrect interpretation of Level.OFF and Level.ALL in SLF4JPlatformLogger
Signed-off-by: Ceki Gulcu <ceki@qos.ch>
This commit is contained in:
parent
4fa92fc007
commit
f7b34c2e60
|
|
@ -115,16 +115,11 @@ class SLF4JPlatformLogger implements System.Logger {
|
||||||
* @param thrown
|
* @param thrown
|
||||||
* @param params
|
* @param params
|
||||||
*/
|
*/
|
||||||
private void log(Level jplLevel, ResourceBundle bundle, String msg, Throwable thrown, Object... params) {
|
private void log(final Level jplLevel, final ResourceBundle bundle, final String msg, final Throwable thrown, final Object... params) {
|
||||||
if (jplLevel == Level.OFF)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (jplLevel == Level.ALL) {
|
final Level jplLevelReduced = fixExtremeLevels(jplLevel);
|
||||||
performLog(org.slf4j.event.Level.TRACE, bundle, msg, thrown, params);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
org.slf4j.event.Level slf4jLevel = jplLevelToSLF4JLevel(jplLevel);
|
org.slf4j.event.Level slf4jLevel = jplLevelToSLF4JLevel(jplLevelReduced);
|
||||||
boolean isEnabled = slf4jLogger.isEnabledForLevel(slf4jLevel);
|
boolean isEnabled = slf4jLogger.isEnabledForLevel(slf4jLevel);
|
||||||
|
|
||||||
if (isEnabled) {
|
if (isEnabled) {
|
||||||
|
|
@ -132,6 +127,27 @@ class SLF4JPlatformLogger implements System.Logger {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>Level.OFF and Level.ALL levels are not supposed to be used when calling log printing methods.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* <p>We compensate for such incorrect usage by transforming Level.OFF as Level.ERROR and
|
||||||
|
* Level.ALL as Level.TRACE.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @param jplLevel
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private Level fixExtremeLevels(Level jplLevel) {
|
||||||
|
if (jplLevel == Level.OFF)
|
||||||
|
return Level.ERROR;
|
||||||
|
|
||||||
|
if (jplLevel == Level.ALL)
|
||||||
|
return Level.TRACE;
|
||||||
|
|
||||||
|
return jplLevel;
|
||||||
|
}
|
||||||
|
|
||||||
private void performLog(org.slf4j.event.Level slf4jLevel, ResourceBundle bundle, String msg, Throwable thrown, Object... params) {
|
private void performLog(org.slf4j.event.Level slf4jLevel, ResourceBundle bundle, String msg, Throwable thrown, Object... params) {
|
||||||
String message = getResourceStringOrMessage(bundle, msg);
|
String message = getResourceStringOrMessage(bundle, msg);
|
||||||
LoggingEventBuilder leb = slf4jLogger.makeLoggingEventBuilder(slf4jLevel);
|
LoggingEventBuilder leb = slf4jLogger.makeLoggingEventBuilder(slf4jLevel);
|
||||||
|
|
|
||||||
|
|
@ -118,5 +118,18 @@ public class SLF4JPlatformLoggingTest {
|
||||||
assertTrue(results.get(line++).contains(this.getClass().getName()));
|
assertTrue(results.get(line++).contains(this.getClass().getName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void extremeLevels() throws IOException {
|
||||||
|
LoggerFinder finder = System.LoggerFinder.getLoggerFinder();
|
||||||
|
assertEquals(EXPECTED_FINDER_CLASS, finder.getClass().getName());
|
||||||
|
Logger systemLogger = finder.getLogger("extremeLevels", null);
|
||||||
|
systemLogger.log(Level.OFF, "hello");
|
||||||
|
systemLogger.log(Level.ALL, "world");
|
||||||
|
|
||||||
|
List<String> results = SPS.stringList;
|
||||||
|
assertEquals(1, results.size());
|
||||||
|
assertEquals("ERROR extremeLevels - hello", results.get(0));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue