I just noticed you added this to AbstractConfiguration. Wouldn’t it be easier 
for users to do it as a method on Configurator?

Ralph

> On Aug 8, 2015, at 12:55 PM, Gary Gregory <[email protected]> wrote:
> 
> 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



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to