经过大量阅读之后,这就是我使工作正常的方式:
注意:有关
更多信息,请阅读JDBC中的Oracle
Diagnosability文档
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=SEVEREoracle.jdbc.level=INFOoracle.jdbc.handlers=java.util.logging.ConsoleHandlerjava.util.logging.ConsoleHandler.level=INFOjava.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
基本上,这是处理程序的声明位置
oracle.jdbc.handlers=java.util.logging.ConsoleHandler
声明
ConsoleHandler由Oracle的JDBC驱动程序使用。可以在此声明任何数量的处理程序,每行一个,并声明该类的全限定名:
oracle.jdbc.handlers=java.util.logging.ConsoleHandleroracle.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处理程序实例。就是这样。
祝您登录愉快!



