This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch release-2.x in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit a48c77690e256d1f987896ed5bce8a3f052601a5 Author: Gary Gregory <[email protected]> AuthorDate: Wed Jan 19 09:01:43 2022 -0500 Add Configurator.setLevel(Logger, Level) and setLevel(String, String). --- .../logging/log4j/core/config/Configurator.java | 26 +++++ .../org/apache/logging/log4j/core/LoggerTest.java | 106 ++++++++++++++++++++- 2 files changed, 128 insertions(+), 4 deletions(-) diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java index de69bcf..d42d1e3 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java @@ -327,6 +327,20 @@ public final class Configurator { } } + /** + * Sets a logger's level. + * + * @param logger + * the logger + * @param level + * the new level + * @return the given logger + */ + public static Logger setLevel(final Logger logger, final Level level) { + setLevel(logger.getName(), level); + return logger; + } + private static boolean setLevel(final LoggerConfig loggerConfig, final Level level) { final boolean set = !loggerConfig.getLevel().equals(level); if (set) { @@ -373,6 +387,18 @@ public final class Configurator { } } + /** + * Sets a logger's level. + * + * @param loggerName + * the logger name + * @param level + * the new level + */ + public static void setLevel(final String loggerName, final String level) { + setLevel(loggerName, Level.toLevel(level)); + } + private static boolean setLevel(final String loggerName, final Level level, final Configuration config) { boolean set; LoggerConfig loggerConfig = config.getLoggerConfig(loggerName); diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/LoggerTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/LoggerTest.java index 1cf24fe..5afc4bd 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/LoggerTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/LoggerTest.java @@ -117,7 +117,7 @@ public class LoggerTest { final List<LogEvent> events = app.getEvents(); assertEventCount(events, 3); assertEquals( - "org.apache.logging.log4j.core.LoggerTest.builder(LoggerTest.java:81)", events.get(0).getSource().toString(), + "org.apache.logging.log4j.core.LoggerTest.builder(LoggerTest.java:113)", events.get(0).getSource().toString(), "Incorrect location"); assertEquals(Level.DEBUG, events.get(0).getLevel(), "Incorrect Level"); MatcherAssert.assertThat("Incorrect message", events.get(1).getMessage().getFormattedMessage(), equalTo("Hello John")); @@ -143,7 +143,19 @@ public class LoggerTest { } @Test - public void debugChangeLevel() { + public void debugChangeLevel_ForLogger() { + logger.debug("Debug message 1"); + assertEventCount(app.getEvents(), 1); + Configurator.setLevel(logger, Level.OFF); + logger.debug("Debug message 2"); + assertEventCount(app.getEvents(), 1); + Configurator.setLevel(logger, Level.DEBUG); + logger.debug("Debug message 3"); + assertEventCount(app.getEvents(), 2); + } + + @Test + public void debugChangeLevel_ForLoggerName() { logger.debug("Debug message 1"); assertEventCount(app.getEvents(), 1); Configurator.setLevel(logger.getName(), Level.OFF); @@ -174,7 +186,26 @@ public class LoggerTest { } @Test - public void debugChangeLevelChildLogger() { + public void debugChangeLevelChildLogger_ForLogger() { + // Use logger AND child loggers + logger.debug("Debug message 1"); + loggerChild.debug("Debug message 1 child"); + loggerGrandchild.debug("Debug message 1 grandchild"); + assertEventCount(app.getEvents(), 3); + Configurator.setLevel(logger, Level.OFF); + logger.debug("Debug message 2"); + loggerChild.debug("Debug message 2 child"); + loggerGrandchild.debug("Debug message 2 grandchild"); + assertEventCount(app.getEvents(), 3); + Configurator.setLevel(logger, Level.DEBUG); + logger.debug("Debug message 3"); + loggerChild.debug("Debug message 3 child"); + loggerGrandchild.debug("Debug message 3 grandchild"); + assertEventCount(app.getEvents(), 6); + } + + @Test + public void debugChangeLevelChildLogger_ForLoggerName() { // Use logger AND child loggers logger.debug("Debug message 1"); loggerChild.debug("Debug message 1 child"); @@ -193,7 +224,74 @@ public class LoggerTest { } @Test - public void debugChangeLevelsChildLoggers(final LoggerContext context) { + public void debugChangeLevelName_ForLoggerName() { + logger.debug("Debug message 1"); + assertEventCount(app.getEvents(), 1); + Configurator.setLevel(logger.getName(), Level.OFF.name()); + logger.debug("Debug message 2"); + assertEventCount(app.getEvents(), 1); + Configurator.setLevel(logger.getName(), Level.DEBUG.name()); + logger.debug("Debug message 3"); + assertEventCount(app.getEvents(), 2); + } + + @Test + public void debugChangeLevelNameChildLogger_ForLoggerName() { + // Use logger AND child loggers + logger.debug("Debug message 1"); + loggerChild.debug("Debug message 1 child"); + loggerGrandchild.debug("Debug message 1 grandchild"); + assertEventCount(app.getEvents(), 3); + Configurator.setLevel(logger.getName(), Level.OFF.name()); + logger.debug("Debug message 2"); + loggerChild.debug("Debug message 2 child"); + loggerGrandchild.debug("Debug message 2 grandchild"); + assertEventCount(app.getEvents(), 3); + Configurator.setLevel(logger.getName(), Level.DEBUG.name()); + logger.debug("Debug message 3"); + loggerChild.debug("Debug message 3 child"); + loggerGrandchild.debug("Debug message 3 grandchild"); + assertEventCount(app.getEvents(), 6); + } + + @Test + public void debugChangeLevelNameChildLoggers_ForLoggerName(final LoggerContext context) { + final org.apache.logging.log4j.Logger loggerChild = context.getLogger(logger.getName() + ".child"); + // Use logger AND loggerChild + logger.debug("Debug message 1"); + loggerChild.debug("Debug message 1 child"); + assertEventCount(app.getEvents(), 2); + Configurator.setLevel(logger.getName(), Level.ERROR.name()); + Configurator.setLevel(loggerChild.getName(), Level.DEBUG.name()); + logger.debug("Debug message 2"); + loggerChild.debug("Debug message 2 child"); + assertEventCount(app.getEvents(), 3); + Configurator.setLevel(logger.getName(), Level.DEBUG.name()); + logger.debug("Debug message 3"); + loggerChild.debug("Debug message 3 child"); + assertEventCount(app.getEvents(), 5); + } + + @Test + public void debugChangeLevelsChildLoggers_ForLogger(final LoggerContext context) { + final org.apache.logging.log4j.Logger loggerChild = context.getLogger(logger.getName() + ".child"); + // Use logger AND loggerChild + logger.debug("Debug message 1"); + loggerChild.debug("Debug message 1 child"); + assertEventCount(app.getEvents(), 2); + Configurator.setLevel(logger, Level.ERROR); + Configurator.setLevel(loggerChild, Level.DEBUG); + logger.debug("Debug message 2"); + loggerChild.debug("Debug message 2 child"); + assertEventCount(app.getEvents(), 3); + Configurator.setLevel(logger, Level.DEBUG); + logger.debug("Debug message 3"); + loggerChild.debug("Debug message 3 child"); + assertEventCount(app.getEvents(), 5); + } + + @Test + public void debugChangeLevelsChildLoggers_ForLoggerName(final LoggerContext context) { final org.apache.logging.log4j.Logger loggerChild = context.getLogger(logger.getName() + ".child"); // Use logger AND loggerChild logger.debug("Debug message 1");
