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]
