使用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.下面给大家一个完成的Demoimport 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();
}
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanffaik
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01