File tree 1 file changed +13
-1
lines changed
log4j-core/src/main/java/org/apache/logging/log4j/core/util/internal
1 file changed +13
-1
lines changed Original file line number Diff line number Diff line change @@ -79,9 +79,21 @@ private void expungeStaleEntries() {
79
79
* Removes a logger from the registry.
80
80
*/
81
81
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
+
82
88
writeLock .lock ();
83
89
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
+ }
85
97
} finally {
86
98
writeLock .unlock ();
87
99
}
You can’t perform that action at this time.
0 commit comments