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:02:44 GMT
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


Mime
View raw message