[ 
https://issues.apache.org/jira/browse/LOG4J2-2806?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17058907#comment-17058907
 ] 

Ralph Goers commented on LOG4J2-2806:
-------------------------------------

I've read through the mentioned issue and the referenced discussion. As you 
noted in the discussion with your user, creating an endless number of Loggers 
is not a good practice. Your user could have solved the problem in other ways 
and used the class name instead of the logger name if they were trying to see 
where the logging call came from. 

That said, if you want to submit a PR I'd be happy to test it.

> Strange usage of WeakMapFactory in LoggerRegistry
> -------------------------------------------------
>
>                 Key: LOG4J2-2806
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-2806
>             Project: Log4j 2
>          Issue Type: Task
>            Reporter: Grzegorz Grzybek
>            Priority: Major
>
> I'm working on https://ops4j1.jira.com/browse/PAXLOGGING-311 and I'm checking 
> some (maybe a bit artificial) scenario where I create millions of unique 
> loggers.
> For this purpose, I've changed 
> {{org.apache.logging.log4j.core.LoggerContext#loggerRegistry}} from:
> {code:java}
> private final LoggerRegistry<Logger> loggerRegistry = new LoggerRegistry<>();
> {code}
> to:
> {code:java}
> private final LoggerRegistry<Logger> loggerRegistry = new 
> LoggerRegistry<>(new LoggerRegistry.WeakMapFactory<>());
> {code}
> The problem is that this didn't help. the _inner_ map (from logger name to 
> instance of {{org.apache.logging.log4j.core.Logger}}) was proper 
> {{WeakHashMap}}, but they weak key (logger name) is still strongly referenced 
> from the value itself.
> {{WeakHashMap}} Javadoc says:
> bq. The value objects in a WeakHashMap are held by ordinary strong 
> references. Thus care should be taken to ensure that value objects do not 
> strongly refer to their own keys, either directly or indirectly, since that 
> will prevent the keys from being discarded.
> I know {{LoggerRegistry.WeakMapFactory}} is used by 
> {{org.apache.logging.log4j.taglib.Log4jTaglibLoggerContext}}, but does it 
> work?



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to