如何启动JDBC Debug模式,打印JDBC诊断日志
时间:2022-03-10 18:03
1.下载Debug版本jar包
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
String loader = Thread.currentThread().getContextClassLoader().toString().replaceAll("[,=:\"]+", "");
ObjectName pattern = new ObjectName("com.oracle.jdbc:type=diagnosability,name=" + loader);
ObjectName diag = ((ObjectName[]) (mbs.queryNames(pattern, null).toArray(new ObjectName[0])))[0];
mbs.setAttribute(diag, new Attribute("LoggingEnabled", true));
System.out.println("LoggingEnabled = " + mbs.getAttribute(diag, "LoggingEnabled"));
import javax.management.Attribute;
import javax.management.AttributeNotFoundException;
import javax.management.InstanceNotFoundException;
import javax.management.InvalidAttributeValueException;
import javax.management.MBeanException;
import javax.management.MBeanServer;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import javax.management.ReflectionException;
public void run() throws SQLException { DriverManager.registerDriver(new OracleDriver()); //需在加载OracleDriver之后开启log enableOracleLogging(); Connection conn = null; Statement stmt = null; ResultSet rset = null; try { conn = getConnection(); System.out.println("Connection retrieved.."); stmt = conn.createStatement(); rset = stmt.executeQuery("select empno from emp"); while (rset.next()) { System.out.println(rset.getInt(1)); } } catch (SQLException sqle) { sqle.printStackTrace(); } finally { if (rset != null) { rset.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } } public static void enableOracleLogging() { try { /** 配置log文件 */ Handler fh = new FileHandler("./oracle_jdbc_log.log"); fh.setLevel(Level.ALL); fh.setFormatter(new SimpleFormatter()); Logger.getLogger("").addHandler(fh); Logger.getLogger("").setLevel(Level.ALL); /** oracle 11g 启动方法 */ MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); String loader = Thread.currentThread().getContextClassLoader().toString().replaceAll("[,=:\"]+", ""); ObjectName pattern = new ObjectName("com.oracle.jdbc:type=diagnosability,name=" + loader); ObjectName diag = ((ObjectName[]) (mbs.queryNames(pattern, null).toArray(new ObjectName[0])))[0]; mbs.setAttribute(diag, new Attribute("LoggingEnabled", true)); System.out.println("LoggingEnabled = " + mbs.getAttribute(diag, "LoggingEnabled")); /** oracle 10g 启动方法 */ // oracle.jdbc.driver.OracleLog.setTrace(true); // enable logging // oracle.jdbc.driver.OracleLog.setTrace(false); // disable logging } catch (Exception e) { e.printStackTrace(); } }
如何启动JDBC Debug模式,打印JDBC诊断日志,布布扣,bubuko.com