It's possible that Log4j2 supports this out of the box, but for Log4j1, the
obvious way is to call logger.log() methods that accept an explicit
Level/Priority [1]. Set a ThreadLocal with the Level to use and pass that
Level to log() method.
[1]
http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Category.html#log%28org.apache.log4j.Priority,%20java.lang.Object%29
Jake
On Mon, 11 Jun 2012 17:55:10 +0800
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
|