setLevel, setRootLevel; code review please, note the added check " if
(!loggerConfig.getLevel().equals(level)) ..."

diff --git
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
index ada5900..7ee09ca 100644
---
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
+++
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
@@ -39,6 +39,7 @@
 import org.apache.logging.log4j.core.Filter;
 import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.appender.AsyncAppender;
 import org.apache.logging.log4j.core.appender.ConsoleAppender;
 import org.apache.logging.log4j.core.async.AsyncLoggerConfig;
@@ -829,4 +830,23 @@
         return buffer.toByteArray();
     }

+    @Override
+    public void setLevel(final String loggerName, final Level level) {
+        setLevel(getLoggerConfig(loggerName), level);
+    }
+
+    @Override
+    public void setRootLevel(final Level level) {
+        setLevel(getRootLogger(), level);
+    }
+
+    private void setLevel(final LoggerConfig loggerConfig, final Level
level) {
+        if (!loggerConfig.getLevel().equals(level)) {
+            loggerConfig.setLevel(level);
+            final LoggerContext loggerContext = (LoggerContext)
LogManager.getContext(false);
+            loggerContext.updateLoggers();
+        }
+    }
+
+
 }
diff --git
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configuration.java
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configuration.java
index c592b05..29fb7b2 100644
---
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configuration.java
+++
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configuration.java
@@ -137,4 +137,18 @@
      * @return the custom levels defined in the current configuration
      */
     List<CustomLevelConfig> getCustomLevels();
+
+    /**
+     * Sets the level of the given logger name.
+     *
+     * @param loggerName the logger name
+     * @param level the new level
+     */
+    void setLevel(String loggerName, Level level);
+
+    /**
+     * Sets the level of the root logger.
+     * @param level the new level
+     */
+    void setRootLevel(Level level);
 }

Gary

On Sat, Aug 8, 2015 at 11:14 AM, Ralph Goers <[email protected]>
wrote:

> Yup.
>
> And while your at it you might want to add setRootLevel(Level level);
>
> Ralph
>
> > On Aug 8, 2015, at 10:19 AM, Gary Gregory <[email protected]>
> wrote:
> >
> > Like this:
> >
> > diff --git
> >
> a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
> >
> b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
> > index ada5900..bf01c3e 100644
> > ---
> >
> a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
> > +++
> >
> b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
> > @@ -39,6 +39,7 @@
> > import org.apache.logging.log4j.core.Filter;
> > import org.apache.logging.log4j.core.Layout;
> > import org.apache.logging.log4j.core.LogEvent;
> > +import org.apache.logging.log4j.core.LoggerContext;
> > import org.apache.logging.log4j.core.appender.AsyncAppender;
> > import org.apache.logging.log4j.core.appender.ConsoleAppender;
> > import org.apache.logging.log4j.core.async.AsyncLoggerConfig;
> > @@ -788,6 +789,13 @@
> >        return list;
> >    }
> >
> > +    public void setLevel(String loggerName, Level level) {
> > +        LoggerConfig loggerConfig = getLoggerConfig(loggerName);
> > +        loggerConfig.setLevel(level);
> > +        final LoggerContext loggerContext = (LoggerContext)
> > LogManager.getContext(false);
> > +        loggerContext.updateLoggers();
> > +    }
> > +
> >    private void setParents() {
> >         for (final Map.Entry<String, LoggerConfig> entry :
> > loggers.entrySet()) {
> >            final LoggerConfig logger = entry.getValue();
> >
> > ?
> >
> > On Fri, Aug 7, 2015 at 5:43 AM, Ralph Goers <[email protected]>
> > wrote:
> >
> >> I'd recommend the Configurator class.
> >>
> >> Ralph
> >>
> >>> On Aug 6, 2015, at 9:46 PM, Gary Gregory <[email protected]>
> wrote:
> >>>
> >>>
> >>> For the simple case where you want to update one level, I think we
> should
> >>> have a one method call for folks. Where would be the best place to hang
> >>> that?
> >>>
> >>> Gary
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: [email protected]
> >> For additional commands, e-mail: [email protected]
> >>
> >>
> >
> >
> > --
> > E-Mail: [email protected] | [email protected]
> > Java Persistence with Hibernate, Second Edition
> > <http://www.manning.com/bauer3/>
> > JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> > Spring Batch in Action <http://www.manning.com/templier/>
> > Blog: http://garygregory.wordpress.com
> > Home: http://garygregory.com/
> > Tweet! http://twitter.com/GaryGregory
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>


-- 
E-Mail: [email protected] | [email protected]
Java Persistence with Hibernate, Second Edition
<http://www.manning.com/bauer3/>
JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
Spring Batch in Action <http://www.manning.com/templier/>
Blog: http://garygregory.wordpress.com
Home: http://garygregory.com/
Tweet! http://twitter.com/GaryGregory

Reply via email to