Logging levels not correct when using java.util.logging -> log4j2 -> Tomcat's JULI

Martin Dratva <[email protected]>
Newsgroups gmane.comp.jakarta.log4j.user
Message-ID <[email protected]>
Hello.

I have multiple microservices, some run on Tomcat some are standalone 
jars. We used to log using java.util.logging framework. Later we made 
switch to Log4j2 (+ JUL adapter), but kept the JUL API for logging as to 
not to have to rewrite the code. This works (and it can not be changed 
although I would like to). Obviously there is some log level translation 
as JUL and Log4j2 use different log level. In non-Tomcat services, log 
levels look like this:

14:49:58.612 FINEST -            t1     Log level FINEST enabled
14:49:58.612 TRACE  -            t1     Log level FINER enabled
14:49:58.613 DEBUG  -            t1     Log level FINE enabled
14:49:58.613 CONFIG -            t1     Log level CONFIG enabled
14:49:58.613 INFO   -            t1     Log level INFO enabled
14:49:58.613 WARN   -            t1     Log level WARNING enabled
14:49:58.614 ERROR  -            t1     Log level SEVERE enabled
This is expected behavior.

However, on Tomcat, we get this:

14:46:38.393 TRACE  -            t1     Log level FINEST enabled
14:46:38.394 DEBUG  -            t1     Log level FINER enabled
14:46:38.394 DEBUG  -            t1     Log level FINE enabled
14:46:38.395 INFO   -            t1     Log level CONFIG enabled
14:46:38.396 INFO   -            t1     Log level INFO enabled
14:46:38.396 WARN   -            t1     Log level WARNING enabled
14:46:38.397 ERROR  -            t1     Log level SEVERE enabled

This is not correct. I belive it has something to do with the 
translation from-to JUL, since Tomcat's JULI is based on JUL.

In order to confirm my suspicion, I have switched Tomcat to use Log4j2 
also for it's internal logging, which solved the log level issue but 
brought another. Thread context is not injected to Log4j2 logs anymore. 
I suspect it is because there are now running 2 Log4j instances - one 
for Tomcat and one for our app.

To solve my issue, I would be happy with either of the solutions

- Fix Tomcat using JULI to show correct Log4j2 log levels or
- Use Tomcat with Log4j instead of JULI but keep ThreadContext working

First one is preferred solution if possible.

Thanks for any suggestions.


-- 
Best regards,
Martin Dratva
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.