logging-log4j-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ralph Goers <ralph.go...@dslextreme.com>
Subject Re: How to have a separate log file for a thread and all sub threads?
Date Mon, 29 Apr 2019 19:29:23 GMT
You don’t. Each LoggerContext has its own hierarchy of Loggers. You would set the log level
on the LoggerContext’s root Logger.

Ralph

> On Apr 29, 2019, at 12:18 PM, Benjamin Jaton <benjamin.jaton@gmail.com> wrote:
> 
> Yes I've explored that route a little bit, inspired by the existing
> ClassLoaderContextSelector implementation.
> 
> One thing I'm not sure about is how do you "set" the log level on a whole
> LoggerContext?
> 
> On Mon, Apr 29, 2019 at 12:03 PM Ralph Goers <ralph.goers@dslextreme.com>
> wrote:
> 
>> If you created a ThreadGroupContextSelector it probably would perform
>> better, but you might be trading one set of problems for another.
>> 
>> Ralph
>> 
>>> On Apr 29, 2019, at 11:58 AM, Benjamin Jaton <benjamin.jaton@gmail.com>
>> wrote:
>>> 
>>> I ended up making a DynamicThreadholdFilter to be able to resolve the log
>>> level dynamically.
>>> 
>>> What's not so great is that this management of the log level with a
>> "post"
>>> filter requires the logger to let everything through (TRACE).
>>> So then methods like isDebugEnabled() will always return true.
>>> 
>>> Anyways for my use case we'll have to go with this as we need a log level
>>> per job (threadgroup).
>>> 
>>> On Mon, Apr 29, 2019 at 11:43 AM Matt Sicker <boards@gmail.com> wrote:
>>> 
>>>> Requiring the use of ThreadContext data everywhere can slow things
>>>> down a little, though not sure by how much.
>>>> 
>>>> On Thu, 25 Apr 2019 at 13:35, Benjamin Jaton <benjamin.jaton@gmail.com>
>>>> wrote:
>>>>> 
>>>>> I've used ThresholdFilter to have the log level check at the level of
>> the
>>>>> (sub) appender:
>>>>> 
>>>>>                 "ThresholdFilter": {
>>>>>                   "level": "${my:threadgroup.jobLogLevel}",
>>>>>                   "onMatch": "ACCEPT",
>>>>>                   "onMismatch": "DENY"
>>>>>                 }
>>>>> 
>>>>> Of course then I need to have the root logger in TRACE to let
>> everything
>>>> in
>>>>> to be filtered later on by the appender:
>>>>> 
>>>>>   "loggers": {
>>>>>     "root": {
>>>>>       "level": "TRACE",
>>>>>       "additivity": "false",
>>>>>       "includeLocation": "true",
>>>>>       "AppenderRef": {
>>>>>         "ref": "JobsRoutingAppender"
>>>>>       }
>>>>>     }
>>>>>   }
>>>>> 
>>>>> What do you think of this?
>>>>> Is performance a concern with this approach?
>>>>> 
>>>>> On Thu, Apr 25, 2019 at 9:33 AM Ralph Goers <
>> ralph.goers@dslextreme.com>
>>>>> wrote:
>>>>> 
>>>>>> Another possibility would be to have a ThreadGroupContextSelector
and
>>>> then
>>>>>> use a different LoggerContext and configuration for each ThreadGroup.
>>>>>> However, that could get very complicated. The RoutingAppender pretty
>>>> much
>>>>>> accomplishes the same thing and would be much easier to do.
>>>>>> 
>>>>>> Ralph
>>>>>> 
>>>>>>> On Apr 25, 2019, at 9:21 AM, Matt Sicker <boards@gmail.com>
wrote:
>>>>>>> 
>>>>>>> Oh damn, right, bit of a limitation there. I'll ponder on this
a bit.
>>>>>>> 
>>>>>>> On Thu, 25 Apr 2019 at 11:18, Ralph Goers <
>>>> ralph.goers@dslextreme.com>
>>>>>> wrote:
>>>>>>>> 
>>>>>>>> Matt, Benjamin’s issue is that he has no control over what
is
>>>> running
>>>>>> in the “jobs” but he wants all the logs for a “job” to end
up in the
>>>> same
>>>>>> appender. His definition of a job is that he is creating a thread
to
>>>> run it
>>>>>> and everything under that thread should route to that Appender. So
he
>>>>>> cannot control what logger names are used much less whether they
have
>>>>>> Markers or not.
>>>>>>>> 
>>>>>>>> Ralph
>>>>>>>> 
>>>>>>>>> On Apr 25, 2019, at 8:59 AM, Matt Sicker <boards@gmail.com>
wrote:
>>>>>>>>> 
>>>>>>>>> On Wed, 24 Apr 2019 at 18:47, Benjamin Jaton <
>>>> benjamin.jaton@gmail.com>
>>>>>> wrote:
>>>>>>>>>> I've implemented the solution based on ThreadGroups.
Now I am
>>>> trying
>>>>>> to
>>>>>>>>>> have a separate log level per job. The goal is to
be able to set
>>>> one
>>>>>> job in
>>>>>>>>>> DEBUG or TRACE while the others stay in WARN. Possible?
>>>>>>>>>> The RoutingAppender creates an appender per route
but as far as I
>>>>>> know I
>>>>>>>>>> cannot set a log level on the appender object. I
guess filters
>>>> could
>>>>>> be
>>>>>>>>>> used but is there something simpler I'm missing?
>>>>>>>>> 
>>>>>>>>> I think you'd be better off using markers for that. See
>>>>>>>>> https://logging.apache.org/log4j/2.x/manual/markers.html
>>>>>>>>> 
>>>>>>>>> You might also be able to just use a naming scheme for
your loggers
>>>>>>>>> that automatically makes them separately configurable
as typical
>>>>>>>>> loggers. For example, say you use a naming scheme
>>>>>>>>> "com.example.threadgroup.<groupName>" as your loggers.
Then you
>>>> could
>>>>>>>>> configure them by name as usual.
>>>>>>>>> 
>>>>>>>>> --
>>>>>>>>> Matt Sicker <boards@gmail.com>
>>>>>>>>> 
>>>>>>>>> 
>>>> ---------------------------------------------------------------------
>>>>>>>>> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
>>>>>>>>> For additional commands, e-mail:
>>>> log4j-user-help@logging.apache.org
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>> ---------------------------------------------------------------------
>>>>>>>> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
>>>>>>>> For additional commands, e-mail: log4j-user-help@logging.apache.org
>>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> --
>>>>>>> Matt Sicker <boards@gmail.com>
>>>>>>> 
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
>>>>>>> For additional commands, e-mail: log4j-user-help@logging.apache.org
>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
>>>>>> For additional commands, e-mail: log4j-user-help@logging.apache.org
>>>>>> 
>>>>>> 
>>>> 
>>>> 
>>>> 
>>>> --
>>>> Matt Sicker <boards@gmail.com>
>>>> 
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
>>>> For additional commands, e-mail: log4j-user-help@logging.apache.org
>>>> 
>>>> 
>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
>> For additional commands, e-mail: log4j-user-help@logging.apache.org
>> 
>> 



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


Mime
View raw message