zoukankan      html  css  js  c++  java
  • 怎样启动JDBC Debug模式,打印JDBC诊断日志

    1.下载Debug版本号jar包
         首先要下载一个Debug版本号的JDBC jar包,Debug版本号的jar包命名形式为jdbcX_g.jar(例如以下图所看到的)。如Oracle11g的Debug版本号的jar包为jdbc6_g.jar。

    点击这里下载:http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html 


    2.启动Logging模式
         第一种方式:设置执行环境变量java -Doracle.jdbc.Trace=true ...(elipse中run->run configurations->arguments一栏)
         另外一种方式:在程序中控制(建议採用这样的方式)
    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 10g 启动方法*/
    			oracle.jdbc.driver.OracleLog.setTrace(true); // enable logging
    			oracle.jdbc.driver.OracleLog.setTrace(false); // disable logging
    3.配置log文件
    jdbc使用的是java.util.logging包中的Logger对象打印log。
    	/**配置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);
    4.以下给大家一个完毕的Demo
    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();
    		}
    	}
    


  • 相关阅读:
    bzoj 4897 天赋 有向图的矩阵数定理
    bzoj 4621 Tc605 思想+dp
    bzoj 4596 [Shoi2016]黑暗前的幻想乡 矩阵树定理+容斥
    bzoj 4455 [Zjoi2016]小星星 树形dp&容斥
    获取Android设备无线和以太网MAC地址
    Java WebSocket库:https://github.com/TooTallNate/Java-WebSocket
    UsbManager, UsbDevice的简单示例
    Android开发之开机自动启动应用
    使用Microsoft Office 2007将文档转换为PDF
    C/C++实现删除字符串的首尾空格
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7258355.html
Copyright © 2011-2022 走看看