File tree Expand file tree Collapse file tree 1 file changed +13
-1
lines changed
log4j-core/src/main/java/org/apache/logging/log4j/core/util/internal Expand file tree Collapse file tree 1 file changed +13
-1
lines changed Original file line number Diff line number Diff line change @@ -79,9 +79,21 @@ private void expungeStaleEntries() {
7979 * Removes a logger from the registry.
8080 */
8181 private void removeLogger (Reference <? extends Logger > loggerRef ) {
82+ Logger logger = loggerRef .get ();
83+ if (logger == null ) return ; // Logger already cleared
84+
85+ MessageFactory messageFactory = logger .getMessageFactory ();
86+ String name = logger .getName ();
87+
8288 writeLock .lock ();
8389 try {
84- loggerRefByNameByMessageFactory .values ().forEach (map -> map .values ().removeIf (ref -> ref == loggerRef ));
90+ Map <String , WeakReference <Logger >> loggerRefByName = loggerRefByNameByMessageFactory .get (messageFactory );
91+ if (loggerRefByName != null ) {
92+ loggerRefByName .remove (name );
93+ if (loggerRefByName .isEmpty ()) {
94+ loggerRefByNameByMessageFactory .remove (messageFactory ); // Cleanup
95+ }
96+ }
8597 } finally {
8698 writeLock .unlock ();
8799 }
You can’t perform that action at this time.
0 commit comments