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 <[email protected]>
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 <[email protected]> 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 <[email protected]>
> 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 <[email protected]> wrote:
> >>>
> >>> On Wed, 24 Apr 2019 at 18:47, Benjamin Jaton <[email protected]>
> 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 <[email protected]>
> >>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: [email protected]
> >>> For additional commands, e-mail: [email protected]
> >>>
> >>>
> >>
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: [email protected]
> >> For additional commands, e-mail: [email protected]
> >>
> >
> >
> > --
> > Matt Sicker <[email protected]>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [email protected]
> > For additional commands, e-mail: [email protected]
> >
> >
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>