Did you miss my earlier email where I said the boolean attribute you are trying to set is the LoggerConfig’s additivity flag? All you have to do is loggerConfig.setAdditive(true|flase). I don’t understand why the additivity flag would be a boolean on setLevel().
Ralph On Jan 31, 2014, at 1:43 PM, Gary Gregory <garydgreg...@gmail.com> wrote: > On Fri, Jan 31, 2014 at 4:33 PM, Nick Williams > <nicho...@nicholaswilliams.net> wrote: > > On Jan 31, 2014, at 3:29 PM, Gary Gregory wrote: > >> On Fri, Jan 31, 2014 at 2:00 PM, Nick Williams >> <nicho...@nicholaswilliams.net> wrote: >> I do not think appenders should be in the API. Appenders are pretty much the >> definition of an implementation detail. >> >> As for setLevel, I absolutely think it's a problem point when migrating from >> Log4j 1 to Log4j 2. In my Log4j 1 apps, I offer a simple admin console for >> changing the log levels of particular classes. This is MUCH harder to do in >> Log4j 2. >> >> However, let's think carefully about what setLevel means. Based on the API >> documentation for Log4j 1, I'm not ever sure anymore what setLevel does (I >> haven't looked at code). I /used/ to think it set the level for that logger >> AND any loggers that inherit from it. Now I'm not sure. >> >> So what's the use case? What might users need? Personally, I need to set the >> level for that logger AND any loggers that inherit from it. But I most >> definitely see the use case for setting the level ONLY for that logger. >> Perhaps we need setLevel and setAllLevels (or setDescendantLevel) methods? >> >> Agreed. >> >> My use case is to support our admin UI. Our old simple console is has a >> set-all type of setting. This is a brute force 'set all loggers to level X' >> setting. Our new console displays a tree with all of the loggers available. >> There the obvious choice is to have a set level for that node and its >> children. Like you, I can also imagine that users would want to only set the >> one node and not the children. I'm not sure how much should be reflected in >> the API though. In the UI that would be two menu items in the pop up: 'Set >> level' and 'Set level for all'. In the API setLevel and setLevels would do >> but the names are so close... setLevel/setChildLevels? > > setLevel and setLevelCascade? > > Or, just overload the name. > > setLevel(Level) and setLevel(Level, boolean)? > > The admin UI would send the set level request and the server would call > setLevel(Level, boolean). setLevel would default to setLevel(Level, true) > which would be cascade. > > Gary > > >> >> Gary >> >> >> Nick >> >> >> On Jan 31, 2014, at 12:32 PM, Gary Gregory wrote: >> >>> On Fri, Jan 31, 2014 at 1:13 PM, Scott Deboy <scott.de...@gmail.com> wrote: >>> Re: appenders, I was thinking about Remko's response here: >>> >>> http://stackoverflow.com/questions/21303746/migrating-from-log4j-1-2-to-log4j-2-how-to-get-list-of-all-appenders-and-rolli >>> >>> I've picked the low-hanging fruits and given minIndex and maxIndex >>> accessors. >>> >>> Gary >>> >>> >>> >>> On 1/31/14, Gary Gregory <garydgreg...@gmail.com> wrote: >>> > On Fri, Jan 31, 2014 at 1:05 PM, Scott Deboy <scott.de...@gmail.com> >>> > wrote: >>> > >>> >> Add setlevel. I also think appender belongs in Api. Yes? >>> >> >>> > >>> > Appenders are in the Core. That would be a big change. >>> > >>> > Another surprise: There is no Logger.getLevel(). >>> > >>> > Gary >>> > >>> > >>> >> On Jan 31, 2014 10:01 AM, "Gary Gregory" <garydgreg...@gmail.com> wrote: >>> >> >>> >>> Porting from v1... >>> >>> >>> >>> We do not have Logger setLevel(Level) because it is not in the LCD API >>> >>> (Slf4j no, Logback yes, JUL yes). >>> >>> >>> >>> This sure makes it a pain to port from v1. >>> >>> >>> >>> What are the choices? >>> >>> >>> >>> - I hard code everything to the Core Logger API, possible if inflexible. >>> >>> - I add a util method that checks the Logger instance to see if it is a >>> >>> Core Logger or if it is a Slf4j logger that wraps a logback logger? >>> >>> Bleh. >>> >>> >>> >>> Or, we can add setLevel and have it propagate the call down. Then we can >>> >>> discuss whether a missing API in the underlying system means a noop or >>> >>> an >>> >>> exception. Like JRE Collections do. >>> >>> >>> >>> Thoughts? >>> >>> >>> >>> Gary >>> >>> >>> >>> -- >>> >>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >>> >>> 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 >>> >>> >>> >> >>> > >>> > >>> > -- >>> > E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >>> > 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: log4j-dev-unsubscr...@logging.apache.org >>> For additional commands, e-mail: log4j-dev-h...@logging.apache.org >>> >>> >>> >>> >>> -- >>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >>> Java Persistence with Hibernate, Second Edition >>> JUnit in Action, Second Edition >>> Spring Batch in Action >>> Blog: http://garygregory.wordpress.com >>> Home: http://garygregory.com/ >>> Tweet! http://twitter.com/GaryGregory >> >> >> >> >> -- >> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >> Java Persistence with Hibernate, Second Edition >> JUnit in Action, Second Edition >> Spring Batch in Action >> Blog: http://garygregory.wordpress.com >> Home: http://garygregory.com/ >> Tweet! http://twitter.com/GaryGregory > > > > > -- > E-Mail: garydgreg...@gmail.com | ggreg...@apache.org > Java Persistence with Hibernate, Second Edition > JUnit in Action, Second Edition > Spring Batch in Action > Blog: http://garygregory.wordpress.com > Home: http://garygregory.com/ > Tweet! http://twitter.com/GaryGregory