После долгого прочтения вот как у меня все заработало:
ПРИМЕЧАНИЕ: Для получения дополнительной информации прочитайте Oracle Диагностируемость в JDBC , документ
Properties prop = new Properties();
prop.put ("user", USER);
prop.put ("password", PASS);
// prop.put(propname, propValue);
Class.forName("oracle.jdbc.driver.OracleDriver");
enableLogging(false);
conn = DriverManager.getConnection("jdbc:oracle:thin:@"+HOST+":"+PORT+":"+SID, prop);
А вот и магия:
static private void enableLogging(boolean logDriver)
throws MalformedObjectNameException, NullPointerException,
AttributeNotFoundException, InstanceNotFoundException,
MBeanException, ReflectionException, InvalidAttributeValueException,
SecurityException, FileNotFoundException, IOException
{
oracle.jdbc.driver.OracleLog.setTrace(true);
// compute the ObjectName
String loader = Thread.currentThread().getContextClassLoader().toString().replaceAll("[,=:\"]+", "");
javax.management.ObjectName name = new javax.management.ObjectName("com.oracle.jdbc:type=diagnosability,name="+loader);
// get the MBean server
javax.management.MBeanServer mbs = java.lang.management.ManagementFactory.getPlatformMBeanServer();
// find out if logging is enabled or not
System.out.println("LoggingEnabled = " + mbs.getAttribute(name, "LoggingEnabled"));
// enable logging
mbs.setAttribute(name, new javax.management.Attribute("LoggingEnabled", true));
File propFile = new File("path/to/properties");
LogManager logManager = LogManager.getLogManager();
logManager.readConfiguration(new FileInputStream(propFile));
if (logDriver) {
DriverManager.setLogWriter(new PrintWriter(System.err));
}
}
Файл свойств (из документации Oracle):
.level=SEVERE
oracle.jdbc.level=INFO
oracle.jdbc.handlers=java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level=INFO
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
По сути, именно здесь декларируются обработчики
oracle.jdbc.handlers=java.util.logging.ConsoleHandler
Объявляет ConsoleHandler
для использования драйвером JDBC Oracle. Здесь можно объявить любое количество обработчиков, по одному на строку, с полным полным именем класса:
oracle.jdbc.handlers=java.util.logging.ConsoleHandler
oracle.jdbc.handlers=java.util.logging.FileHandler
...
Можно использовать собственные обработчики, созданные по тому же правилу. Следующие строки предназначены для настройки обработчика
java.util.logging.ConsoleHandler.level=INFO
вызовет метод setLevel(Level.INFO)
экземпляра обработчика ConsoleHandler
.
com.my.own.project.logging.handler.MyHandler.foo=Bar
вызовет метод setFoo("Bar")
экземпляра обработчика MyHandler
. И это все.
Удачной регистрации!