怎样启动JDBC Debug模式,打印JDBC诊断日志
2017-07-30 09:53
676 查看
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一栏)
另外一种方式:在程序中控制(建议採用这样的方式)
假设用的是Oracle 10g,直接运行:
3.配置log文件
jdbc使用的是java.util.logging包中的Logger对象打印log。
首先要下载一个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();
}
}
相关文章推荐
- 如何启动JDBC Debug模式,打印JDBC诊断日志
- 启动JDBC Debug模式,打印JDBC诊断日志
- 怎样在控制台或者日志打印输出JDBC执行的sql语句
- 只在Debug模式下打印日志
- Tomcat怎样用Debug模式启动
- 重写NSLog,Debug模式下打印日志和当前行数
- DEBUG启动模式弹出ThreadPoolExecutor解决方案
- 在Myeclipse下用Debug模式启动不了Tomcat,但是Run模式可以
- Tomcat在debug模式下启动,使用eclipse监听
- 如何让tomcat打印出启动时的日志
- iOS打印Debug日志的方式
- Android真机调试----不打印debug和verbose级别的日志之华为手机的坑
- tomcat debug模式 启动失败 但非debug模式可以正常运行
- 启动Oracle后台服务器的方法_用来检测产生错误的原因,会打印日志
- 怎样在Eclipse中使用debug模式调试程序
- 解决在MyEclipse下DEBUG模式启动Tomcat慢的问题
- 打印debug级别的日志
- Andorid之华为手机开发模式不打印日志
- intelliJ idea debug模式下启动慢的原因
- myeclipse部署项目后,debug模式启动,总是弹出Class.class文件