Thanks for all the nice replies. It's a good starting point for me.
We may need a bit more than out-of-the-box MDCFilter or
DynamicThresholdFilter, in that for different ejbs different users get the
DEBUG level. For example, for ejb1, user A gets DEBUG while user B gets
WARNING; for ejb2, user B gets DEBUG and user A get WARNING. My
understanding is that, for MDCFilter/DynamicThresholdFilter a user always
gets the same effective level for all loggers
Of course, we can extend those filters to consider also the logger name.
However, we are a bit afraid of its performance overhead. The problem is
that, we cannot easily put logger names in a Map as what
DynamicThresholdFilter does, because the logger name can be a package name
(so we need to check if this name is a prefix of the fully qualified class
name of an EJB).
Any good ideas? Am I missing something obvious?
Kind Regards,
Yong
ceki <ceki@qos.ch> wrote on 06/11/2012 11:59:32 PM:
> From: ceki <ceki@qos.ch>
> To: Log4J Users List <log4j-user@logging.apache.org>
> Date: 06/12/2012 12:00 AM
> Subject: Re: User-based logger level
>
>
> Yours is a text-book requirement:
>
> http://logback.qos.ch/reasonsToSwitch.html#filters
>
> See the docs on MDCFilter at [1].
>
> [1] http://logback.qos.ch/manual/filters.html#TurboFilter
>
> --
> Ceki
> http://twitter.com/#!/ceki
>
> On 11.06.2012 11:55, yong.li@agfa.com wrote:
> > Dear all,
> >
> > We're about to implement a logging strategy that for different users
> > different effective logger level are used. In particular, we are doing
> > EJB, and we have already pushed user info onto MDC to implement this
> > strategy.
> >
> > By default, the system will run using the following example logger
levels
> > for all users:
> > root = INFO
> > com.my.ejb1=WARNING
> > com.my.ejb2=INFO // different ejbs may have different default levels
> > ...
> >
> > When a system setting is enabled at runtime, we want to change
> > com.my.ejb1=DEBUG, but only for a few selected users. That is, if user
A
> > invokes ejb1, all ejb1 log messages with level>= DEBUG will be logged,
> > while if another user B invokes ejb1, it uses the default setting, and
> > only messages with level>= WARNING will be logged. (it also honors the
> > logger hierarchy, that is if we want to change the level for a
package,
> > all ejbs in that package behave in the same way)
> >
> > We will do this on our production systems, so performance is critical.
> >
> > What would be a good way to achieve this?
> >
> > Kind Regards,
> >
> > Yong
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
> For additional commands, e-mail: log4j-user-help@logging.apache.org
>
|