Skip to content

Commit 401a6ed

Browse files
authored
Change logic to avoid calling setParent (#276)
1 parent b7994a6 commit 401a6ed

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

src/main/java/com/mongodb/jdbc/logging/MongoLogger.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package com.mongodb.jdbc.logging;
1818

19+
import java.util.logging.Handler;
1920
import java.util.logging.Level;
2021
import java.util.logging.Logger;
2122

@@ -73,11 +74,19 @@ private void createLogger(String className, MongoLogger parentLogger) {
7374
? className
7475
: parentLogger.connectionId + "_" + className;
7576
this.logger = Logger.getLogger(loggername);
76-
logger.setParent(parentLogger.logger);
7777
logger.setLevel(parentLogger.logger.getLevel());
78-
// Make sure to allow using parent handler
79-
logger.setUseParentHandlers(true);
8078

79+
// This is a work-around for the simpler logic of calling `logger.setParent(parent); logger.setUseParentHandlers(true);`
80+
// after configuring the parent logger handlers for the connection.
81+
// This is to avoid issue with log managers which are restricting use of setParent like JBoss Log Manager for example.
82+
for (Handler handler : logger.getHandlers()) {
83+
// Clean the handler list to avoid any duplication of logs from transitive handlers
84+
logger.removeHandler(handler);
85+
}
86+
for (Handler handler : parentLogger.logger.getHandlers()) {
87+
// Add all parent handlers
88+
logger.addHandler(handler);
89+
}
8190
this.connectionId = parentLogger.connectionId;
8291
}
8392

0 commit comments

Comments
 (0)