栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JDBC日志记录到文件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JDBC日志记录到文件

经过大量阅读之后,这就是我使工作正常的方式:


注意:有关
更多信息,请阅读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
处理程序实例。就是这样。

祝您登录愉快!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/496199.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号