This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git


The following commit(s) were added to refs/heads/master by this push:
     new 5b83337  Add Configurator.setLevel(Logger, Level) and setLevel(String, 
String).
5b83337 is described below

commit 5b833373f5143d7f904e506f02a26d70dadf36f1
Author: Gary Gregory <[email protected]>
AuthorDate: Wed Jan 19 09:01:43 2022 -0500

    Add Configurator.setLevel(Logger, Level) and setLevel(String, String).
---
 .../org/apache/logging/log4j/core/LoggerTest.java  | 106 ++++++++++++++++++++-
 .../logging/log4j/core/config/Configurator.java    |  26 +++++
 src/changes/changes.xml                            |   3 +
 3 files changed, 130 insertions(+), 5 deletions(-)

diff --git 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/LoggerTest.java 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/LoggerTest.java
index e7d3a69..9828407 100644
--- 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/LoggerTest.java
+++ 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/LoggerTest.java
@@ -139,7 +139,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);
@@ -170,7 +182,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");
@@ -189,7 +220,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");
@@ -324,7 +422,6 @@ public class LoggerTest {
         assertEventCount(events, 2);
     }
 
-
     @Test
     public void structuredData() {
         ThreadContext.put("loginId", "JohnDoe");
@@ -340,7 +437,6 @@ public class LoggerTest {
         assertEventCount(events, 1);
     }
 
-
     @Test
     public void testAdditivity(final LoggerContext context) throws Exception {
         final Logger localLogger = context.getLogger("org.apache.test");
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 a27b944..af8a487 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) {
         final boolean set;
         LoggerConfig loggerConfig = config.getLoggerConfig(loggerName);
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index a7fb356..9f182f3 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -285,6 +285,9 @@
       <action issue="LOG4J2-3282" dev="ckozak" type="add" due-to="Michael 
Vorburger">
         Add the log4j-to-jul JDK Logging Bridge
       </action>
+      <action type="add" dev="ggregory" due-to="Gary Gregory">
+        Add Configurator.setLevel(Logger, Level) and setLevel(String, String). 
     
+      </action>
       <!-- UPDATE -->
       <action dev="ggregory" type="udpate" due-to="Dependabot">
         Bump Mockito from 3.11.2 to 4.2.0.

Reply via email to