[
https://issues.apache.org/jira/browse/LOG4J2-945?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14343217#comment-14343217
]
Ralph Goers commented on LOG4J2-945:
------------------------------------
I would think calculating the level for each event would definitely impact
performance. I am pretty sure this code is passed through multiple times for
every logging event. The idea of using the maximum level was to make sure that
the listeners would get control when needed. It is much faster to check the
single ivar and throw away the event if no logging is required (the normal
case) than to run through a list of listeners and have each one decide if it
should get control.
> Reconfiguring statusLogger to a higher level doesn't work correctly
> -------------------------------------------------------------------
>
> Key: LOG4J2-945
> URL: https://issues.apache.org/jira/browse/LOG4J2-945
> Project: Log4j 2
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.1
> Reporter: Stefan Wehner
> Priority: Minor
> Attachments: remove_listeners_level.patch
>
>
> When reconfiguring log4j and changing the level of the status logger to a
> higher level - e.g. from WARN to DEBUG, it doesn't work correctly.
> Steps to reproduce:
> # Configure from log4j2.xml containing:
> {code}
> <Configuration status="WARN" monitorInterval="5">
> ...
> {code}
> # With the app running, change status to a higher level:
> {code}
> <Configuration status="DEBUG" monitorInterval="5">
> ...
> {code}
> # Observe that the log config is reloaded, but no debug messages for the
> status logger appear.
> From what I've seen this is because the {{StatusConfiguration.initialize()}}
> reconfigures the listeners' level
> [StatusConfig:193|https://git-wip-us.apache.org/repos/asf?p=logging-log4j2.git;a=blob;f=log4j-core/src/main/java/org/apache/logging/log4j/core/config/status/StatusConfiguration.java;h=4d2ee51b4cf5dcb6f62029fe307093a759bf0af7;hb=HEAD#l193]
> But it doesn't update the {{listenersLevel}} field that the {{StatusLogger}}
> uses for checking if the logger is enabled (I understand this should be the
> maximum of all of the listener's levels)
> [StatusLogger:273|https://git-wip-us.apache.org/repos/asf?p=logging-log4j2.git;a=blob;f=log4j-api/src/main/java/org/apache/logging/log4j/status/StatusLogger.java;h=39d447d9793ca08a7d86b9eaaf6ef3dd406cf9a2;hb=HEAD#l273]
> So in this case the listenersLevel is still at WARN, even though the console
> listener has a DEBUG level, and all the log messages are ignored because
> isEnabled(DEBUG) returns false.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]