And if you can Javadoc things as you recall them, that much the better! :)

Gary

On Jul 23, 2013, at 11:23, Ralph Goers <ralph.go...@dslextreme.com> wrote:

> I should add that the LoggerConfig and Configuration was one of the first 
> things I worked on when I started working on 2.0.  Things have changed since 
> then so it might possible to add a new LoggerConfig to an existing 
> configuration.  I'd have to review it and remind myself of what the problems 
> were.
>
> Ralph
>
> On Jul 22, 2013, at 2:59 PM, Ralph Goers wrote:
>
>> Well, you can actually do that.  It is just not my number one recommendation 
>> :-)  I'm pretty sure I have answered how to do that a few times. It just 
>> needs to be documented.
>>
>> The actual code to do this is
>>
>>      LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
>>
>>      Configuration config = ctx.getConfiguration();
>>
>>      LoggerConfig loggerConfig = config.getLoggerConfig(loggerName);
>>
>>      loggerConfig.setLevel(level);
>>
>>      ctx.updateLoggers();
>>
>> Note that the LoggerConfig returned may not match loggerName - it might be a 
>> parent.  Also, adding a new LoggerConfig to an existing configuration is not 
>> allowed as it cannot be done atomically. In that case you have to create a 
>> new configuration.
>>
>> Ralph
>>
>>
>> On Jul 22, 2013, at 2:04 PM, Nicholas Williams wrote:
>>
>>> I can live with having to use the Core directly to change logger
>>> levels, as opposed to using the API. But your solution of cloning,
>>> changing, and replacing the configuration seems extremely heavy and
>>> excessive for merely changing the level for a single logger. There are
>>> a lot of other things that happen as a result that are completely
>>> unrelated to changing the level for a logger.
>>>
>>> Note that org.apache.log4j.Logger from Log4j 1 includes a setLevel
>>> method. While I understand that Log4j 1 isn't a separated
>>> API/implementation like Log4j 2, users are used to being able to
>>> easily change Logger levels, and you WILL (I'm confident) start seeing
>>> "Why is this so hard" questions when Log4j 1 sunsets and users start
>>> migrating en masse.
>>>
>>> On Mon, Jul 22, 2013 at 3:48 PM, Ralph Goers <ralph.go...@dslextreme.com> 
>>> wrote:
>>>> I guess I have to disagree. With Logback it is more explicit since SLF4J 
>>>> is its API.   The more of this stuff that gets added to the API the more 
>>>> difficult it is going to be to keep the API separate from the 
>>>> implementation.  My view is that the API is primarily for applications 
>>>> that want to use Log4j to generate Log events.  Doing things to customize 
>>>> how Appenders, Loggers, Filters, etc work is very much tied to the 
>>>> implementation.  Note that none of those are exposed in the API today and 
>>>> you would have to to do what you are proposing.
>>>>
>>>> Ralph
>>>>
>>>> On Jul 22, 2013, at 12:56 PM, Gary Gregory wrote:
>>>>
>>>>> This seems like an "obvious" feature and should be part of the public
>>>>> API/feature set (IMO).
>>>>>
>>>>> Gary
>>>>>
>>>>>
>>>>> On Mon, Jul 22, 2013 at 3:08 PM, Nick Williams <
>>>>> nicho...@nicholaswilliams.net> wrote:
>>>>>
>>>>>> We do the _exact same thing_ in our apps that use Log4j 1. Being able to
>>>>>> do this is crucial to us. Being able to do this using the API is ideal 
>>>>>> and
>>>>>> obviously preferred so that the Core can be a runtime dependency, but as
>>>>>> long as we can do it one way or another we're ok.
>>>>>>
>>>>>> Nick
>>>>>>
>>>>>> On Jul 22, 2013, at 2:05 PM, Gary Gregory wrote:
>>>>>>
>>>>>>> Here is a user story I have at work all the time, which I'd like to be
>>>>>> able
>>>>>>> to do in Log4J 2 when we eventually migrate to it.
>>>>>>>
>>>>>>> Our server starts. A couple of days later, something goes wrong. Our 
>>>>>>> user
>>>>>>> contacts us and we tell them to use our admin console to enable 
>>>>>>> debugging
>>>>>>> for X and Y. This causes the log levels for certain loggers to be set to
>>>>>>> DEBUG, which spits out lots of details. The user then sends us the log
>>>>>> file
>>>>>>> and resets the system to normal. Under the covers the loggers go back to
>>>>>>> INFO or WARN.
>>>>>>>
>>>>>>> Our console sends a request to the server, which in turns uses the log4j
>>>>>> 1
>>>>>>> API to change the log level.
>>>>>>>
>>>>>>> How would I do that in v2?
>>>>>>>
>>>>>>> Gary
>>>>>>>
>>>>>>>
>>>>>>> On Mon, Jul 22, 2013 at 1:55 PM, Ralph Goers <ralph.go...@dslextreme.com
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Can you explain what it is you are really trying to do?  Rather than
>>>>>> just
>>>>>>>> answer specific questions I am wondering if there isn't a better way to
>>>>>> do
>>>>>>>> what you want.
>>>>>>>>
>>>>>>>> Ralph
>>>>>>>>
>>>>>>>>
>>>>>>>> On Jul 22, 2013, at 7:14 AM, SMITH, CURTIS wrote:
>>>>>>>>
>>>>>>>>> From a thread back in May:
>>>>>>>>>
>>>>>>>>> My question to the below snips of the thread are;
>>>>>>>>>
>>>>>>>>> My app has many Catagories (using 1.x terminology).  To setLevel in 
>>>>>>>>> 1.x
>>>>>>>> I had to getCurrentCatagories() and iterate over the list setting 
>>>>>>>> level.
>>>>>>>>>
>>>>>>>>> In 2.x, does the code below set all Appenders regardless of what Level
>>>>>>>> they were set to in log4j.xml?
>>>>>>>>>
>>>>>>>>> loggerConfig.setLevel(Level.DEBUG);
>>>>>>>>> ctx.updateLoggers();
>>>>>>>>>
>>>>>>>>> The next question is how to set the level of just one Appender
>>>>>>>> (Logger??)  ?   Is there a way to get the list / iterator of
>>>>>>>> Appenders(Logger?)   like you could get a a list of Catagories in 1.x?
>>>>>>>>>
>>>>>>>>> It appears that LogManager.getLogger("foo") you need to know the 
>>>>>>>>> logger
>>>>>>>> names at coding time.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks, curt
>>>>>>>>>
>>>>>>>>> =======
>>>>>>>>>
>>>>>>>>> Ralph Goers said:
>>>>>>>>>>> No, the X Logger does not inherit its level from the root Logger. It
>>>>>>>> inherits its level from
>>>>>>>>> the root LoggerConfig.  See the picture at
>>>>>>>> http://logging.apache.org/log4j/2.x/manual/architecture.html.
>>>>>>>>>
>>>>>>>>> The level you are modifying is brought into each Logger so that the
>>>>>>>> level can be tested very
>>>>>>>>> quickly.  That is why the note on the setLevel method says it is
>>>>>>>> there primarily for unit
>>>>>>>>> testing.
>>>>>>>>>
>>>>>>>>> To do what you are attempting below you would need to do:
>>>>>>>>>
>>>>>>>>> LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
>>>>>>>>> Configuration config = ctx.getConfiguration();
>>>>>>>>> LoggerConfig loggerConfig = config.getRootLogger();
>>>>>>>>> /* You could also specify the actual logger name as below and it
>>>>>>>> will return the LoggerConfig
>>>>>>>>> used by the Logger.
>>>>>>>>>     LoggerConfig loggerConfig = getLoggerConfig("X");
>>>>>>>>> */
>>>>>>>>> loggerConfig.setLevel(Level.DEBUG);
>>>>>>>>> ctx.updateLoggers();  // This causes all Loggers to refetch
>>>>>>>> information from their LoggerConfig.
>>>>>>>>>
>>>>>>>>> Ralph
>>>>>>>>>
>>>>>>>>> Eric Scheie said:
>>>>>>>>>>> This
>>>>>>>>> is the actual code I used.
>>>>>>>>>
>>>>>>>>>   LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
>>>>>>>>>
>>>>>>>>>   Configuration config = ctx.getConfiguration();
>>>>>>>>>
>>>>>>>>>   LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.
>>>>>>>>> ROOT_LOGGER_NAME);
>>>>>>>>>
>>>>>>>>>   loggerConfig.setLevel(level);
>>>>>>>>>
>>>>>>>>>   ctx.updateLoggers();
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
>>>>>>>>> For additional commands, e-mail: log4j-user-h...@logging.apache.org
>>>>>>>>
>>>>>>>>
>>>>>>>> ---------------------------------------------------------------------
>>>>>>>> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
>>>>>>>> For additional commands, e-mail: log4j-user-h...@logging.apache.org
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> 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-user-unsubscr...@logging.apache.org
>>>>>> For additional commands, e-mail: log4j-user-h...@logging.apache.org
>>>>>
>>>>>
>>>>> --
>>>>> 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-user-unsubscr...@logging.apache.org
>>>> For additional commands, e-mail: log4j-user-h...@logging.apache.org
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
>>> For additional commands, e-mail: log4j-user-h...@logging.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
> For additional commands, e-mail: log4j-user-h...@logging.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-user-h...@logging.apache.org

Reply via email to