在Spring Boot 3中,无法为Oracle Universal Connection Pool(UCP)启用TRACE/FINEST级别的日志
我花了几天时间尝试在我的Spring Boot应用中开启Oracle UCP日志,但还未成功。
这里是我用来获取一些细节的代码(根日志级别和Oracle日志记录器的级别、处理程序):
@SpringBootApplication
@EnableAsync
@Slf4j
public class RabotApplication {
public static void main(String[] args) {
SpringApplication.run(RabotApplication.class, args);
System.out.println("--- LIST OF ACTIVE LOGGERS ---");
java.util.Enumeration<String> loggerNames = java.util.logging.LogManager.getLogManager().getLoggerNames();
while (loggerNames.hasMoreElements()) {
String name = loggerNames.nextElement();
if (name.contains("oracle") || name.isEmpty()) {
Logger logger = java.util.logging.Logger.getLogger(name);
System.out.println("Logger found: " + name + " [Level: " + logger.getLevel() + "]");
System.out.println("UseParentHandlers: " + logger.getUseParentHandlers());
for (java.util.logging.Handler h : logger.getHandlers()) {
System.out.println("Handler: " + h.getClass().getName() + " level: " + h.getLevel());
}
logger.finest("Test finest message");
}
}
System.out.println("-------------------------------------");
}
因此输出是:
--- LIST OF ACTIVE LOGGERS ---
Logger found: [Level: INFO]
UseParentHandlers: true
Handler: org.slf4j.bridge.SLF4JBridgeHandler level: ALL
Logger found: oracle.ucp [Level: FINEST]
UseParentHandlers: true
2026-04-17T13:01:05.376+03:00 TRACE 33153 --- [rabot] [ main] oracle.ucp : Test finest message
Logger found: oracle.ucp.jdbc [Level: FINEST]
UseParentHandlers: true
2026-04-17T13:01:05.376+03:00 TRACE 33153 --- [rabot] [ main] oracle.ucp.jdbc : Test finest message
Logger found: oracle.jdbc [Level: FINEST]
UseParentHandlers: true
2026-04-17T13:01:05.376+03:00 TRACE 33153 --- [rabot] [ main] oracle.jdbc : Test finest message
-------------------------------------
如你所见,我能够看到自定义的Finest级别消息,但应用程序运行且池被使用时,根本没有显示任何日志。
以下是我使用的Oracle库:
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc11</artifactId>
<version>23.26.1.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ucp</artifactId>
<version>23.26.1.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.oracle.database.security</groupId>
<artifactId>oraclepki</artifactId>
<version>23.26.1.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.oracle.database.security</groupId>
<artifactId>osdt_cert</artifactId>
<version>21.21.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.oracle.database.security</groupId>
<artifactId>osdt_core</artifactId>
<version>21.21.0.0</version>
<scope>compile</scope>
</dependency>
解决方案
请参考下方文档了解UCP日志:
https://docs.oracle.com/en/database/oracle/oracle-database/26/jjucp/logging-and-tracing-in-UCP.html#GUID-9DD72639-91E5-479C-926E-9CED38D77E61
默认情况下日志记录是禁用的,你需要通过设置以下系统属性(JVM属性)来启用它:
-Doracle.ucp.diagnostic.enableLogging=true
你是否为你的UCP池设置了任何连接池名称?
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。