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/19 14:03:30 UTC
[logging-log4j2] 11/13: Add Configurator.setLevel(Logger, Level) and setLevel(String, String).
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 <ga...@gmail.com>
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");