You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2022/01/24 19:50:04 UTC

[logging-log4j2] 02/02: Add Configurator.setLevel(Class, Level).

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 3042e80fc6624e410925e4a264acddad92cc1541
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Mon Jan 24 14:49:56 2022 -0500

    Add Configurator.setLevel(Class, Level).
---
 .../apache/logging/log4j/core/config/Configurator.java  | 12 ++++++++++++
 .../java/org/apache/logging/log4j/core/LoggerTest.java  | 17 ++++++++++++++++-
 src/changes/changes.xml                                 |  2 +-
 3 files changed, 29 insertions(+), 2 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 e165a0d..e0f0e4f 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
@@ -341,6 +341,18 @@ public final class Configurator {
         return logger;
     }
     
+    /**
+     * Sets a logger's level.
+     *
+     * @param clazz
+     *            the logger
+     * @param level
+     *            the new level
+     */
+    public static void setLevel(final Class<?> clazz, final Level level) {
+        setLevel(LoggerContext.getContext(StackLocatorUtil.getCallerClassLoader(2), false, null), clazz.getName(), level);
+    }
+    
     private static boolean setLevel(final LoggerConfig loggerConfig, final Level level) {
         final boolean set = !loggerConfig.getLevel().equals(level);
         if (set) {
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 5afc4bd..dbfd10d 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
@@ -81,6 +81,8 @@ public class LoggerTest {
     org.apache.logging.log4j.Logger logger;
     org.apache.logging.log4j.Logger loggerChild;
     org.apache.logging.log4j.Logger loggerGrandchild;
+    org.apache.logging.log4j.Logger loggerClass;
+
     private final ListAppender app;
 
     private final ListAppender host;
@@ -91,6 +93,7 @@ public class LoggerTest {
         logger = context.getLogger("LoggerTest");
         loggerChild = context.getLogger("LoggerTest.child");
         loggerGrandchild = context.getLogger("LoggerTest.child.grand");
+        loggerClass = context.getLogger(LoggerTest.class);
         this.app = app.clear();
         this.host = host.clear();
         this.noThrown = noThrown.clear();
@@ -117,7 +120,7 @@ public class LoggerTest {
         final List<LogEvent> events = app.getEvents();
         assertEventCount(events, 3);
         assertEquals(
-                "org.apache.logging.log4j.core.LoggerTest.builder(LoggerTest.java:113)", events.get(0).getSource().toString(),
+                "org.apache.logging.log4j.core.LoggerTest.builder(LoggerTest.java:116)", 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,6 +146,18 @@ public class LoggerTest {
     }
 
     @Test
+    public void debugChangeLevel_ForClass() {
+        loggerClass.debug("Debug message 1");
+        assertEventCount(app.getEvents(), 1);
+        Configurator.setLevel(LoggerTest.class, Level.OFF);
+        loggerClass.debug("Debug message 2");
+        assertEventCount(app.getEvents(), 1);
+        Configurator.setLevel(LoggerTest.class, Level.DEBUG);
+        loggerClass.debug("Debug message 3");
+        assertEventCount(app.getEvents(), 2);
+    }
+
+    @Test
     public void debugChangeLevel_ForLogger() {
         logger.debug("Debug message 1");
         assertEventCount(app.getEvents(), 1);
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 97dc962..978050e 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -182,7 +182,7 @@
         Add org.apache.logging.log4j.core.appender.AsyncAppender.getAppenders() to more easily port from org.apache.log4j.AsyncAppender.getAllAppenders(). 
       </action>
       <action type="add" dev="ggregory" due-to="Gary Gregory">
-        Add Configurator.setLevel(Logger, Level) and setLevel(String, String).      
+        Add Configurator.setLevel(Logger, Level), setLevel(String, String), and setLevel(Class, Level).
       </action>
       <!-- UPDATES -->
       <action dev="ggregory" type="udpate" due-to="Dependabot">