[
https://issues.jboss.org/browse/LOGMGR-260?page=com.atlassian.jira.plugin...
]
Philippe Marschall commented on LOGMGR-260:
-------------------------------------------
I'm not sure I follow. For one thing the terminology is very confusing, there are two
different things called system logger, {{java.lang.System.Logger}} on one hand and
{{java.util.logging.Logger}} used by JDK/system modules on the other hand. This issue is
about the latter. I believe part of the issue it that not all JDK modules have been
converted to {{java.lang.System.Logger}} and that RMI uses {{ava.util.logging.Logger}}
directly, see also
https://bugs.openjdk.java.net/browse/JDK-7054233. But maybe I'm
missing something.
System loggers run with level ALL
---------------------------------
Key: LOGMGR-260
URL:
https://issues.jboss.org/browse/LOGMGR-260
Project: JBoss Log Manager
Issue Type: Bug
Components: core
Environment: Java 9+
Reporter: Philippe Marschall
Priority: Major
After migrating to Java 11 we were suddenly seeing a lot of caught exceptions
{{sun.rmi.runtime.Log#getSource()}}. This was surprising to use because we WildFly which
sets the "sun.rmi" logger to level WARN. Upon closer inspection the issue is
that the logger used by {{sun.rmi.runtime.Log}} has level ALL ({{Integer#MIN_VALUE}}).
The issue for this seems to be the following:
# since Java 9 java.util.logging differentiates between system loggers (used by modules
in the platform classloader) and user loggers (everything else), see
{{java.util.logging#Logger.demandLogger(String, String, Class<?>)}}
# when a system logger is created a second user logger is created and their
configurations are merged, however they are merged based on internal state maintained by
{{#setLevel(Level)}}, see {{java.util.logging.LogManager#demandSystemLogger(String,
String, Module)}} and {{java.util.logging.Logger#mergeWithSystemLogger(Logger)}}
# {{org.jboss.logmanager.Logger}} only ends up calling {{#setLevel(Level)}} with
{{Level.ALL}} therefore the resulting system logger always has the level ALL
The issue is quite hard to test because:
# the effect only happens when the caller of {{#getLoggger(String)}} is a system module
# the log output is not different, only {{#isLoggable(Level)}} checks that shouldn't
succeed suddenly succeed so you only see the overhead
--
This message was sent by Atlassian Jira
(v7.13.8#713008)