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">