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...@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-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-user-h...@logging.apache.org

Reply via email to