• 试用log4jdbc


    近日发现一个好东东log4jdbc,他是一个JDBC驱动器,能够记录SQL日志和SQL执行时间等信息。log4jdbc使用SLF4J(Simple Logging Facade For Java)作为日志系统。特性:
    1.支持JDBC3和JDBC4,其中JDBC3对应于JDK 1.4 or 1.5,JDBC4要求JDK 1.6或以上。
    2.支持现有大部分JDBC驱动。
    3.易于配置(在大部分情况下,只需要改变驱动类名并在jdbc url前加上”jdbc:log4“,设置好日志输出级别)。
    4.能够自动把SQL变量值加到SQL输出日志中,改进易读性和方便调试。
    5.能够快速标识出应用程序中执行比较慢的SQL语句。
    6.能够生成SQL连接数信息帮助识别连接池/线程问题。

    由于我们的持久层框架采用Ibatis,而系统操作的数据量也非常的大,所有的SQL前线前都必须通过DBA的审核和调优;而为了提升性能,要求所有的SQL都必须用动态绑定的方式,而不能拼装SQL;这样在调试SQL时就会有些不方便,而且自己不知道各SQL执行所消耗的时间(公司也有提供SQLTrace工具,但是用起来比较复杂);以前国际站自己也写了一个类似的框架alibaba-intl-ark来对Oracle的JDBC驱动进行封装,也尝试过使用,使用的结果并不是很理想,兼容性比较差,功能也不是很完善,所以该框架也就没多少人使用了;

    发现log4jdbc之后立马试用了一把,感觉还不错的,下面简单介绍下使用步骤和方法:
    1、到官网下载log4jdbc和slf4j的jar包;比如log4jdbc3-1.1.jar、slf4j-api-1.5.0.jar,对于slf4j要看系统到底使用什么log框架,若使用log4j,则需要slf4j-log4j12-1.5.0.jar;
    2、将应用中的driver-class设置为net.sf.log4jdbc.DriverSpy;对于常用的jdbc驱动无需其他设置,比如oracle驱动oracle.jdbc.driver.OracleDriver也已经在默认设置中了,若默认驱动列表中不包括你的应用系统中需要的驱动,那需要通过-Dlog4jdbc.drivers来进行设置系统属性,支持的默认驱动列表可到官网查看,网址见后;
    3、在应用中jdbc url最前面添加jdbc:log4;比如oracle的url就变成了jdbc:log4jdbc:oracle:thin:@x.x.x.x:1521:dbname;
    4、在日志系统中设置jdbc.sqlonly、jdbc.sqltiming等日志级别,可直接将log4jdbc doc中的日志内容copy过去;
    5、运行系统测试,到对应日志文件中查看SQL相关信息;

    前面提到了基本的log4jdbc配置和功能,除了这些之外,他也还提供一些比较复杂的功能,比如可以通过-Dlog4jdbc.sqltiming.warn.threshold参数设置SQL耗时多少以上就打印warn信息;另外,log4jdbc还提供了一个对日志文件进行分析的脚本;
    经测试,log4jdbc不能在XA环境下使用,比如jboss datasource配置中,若以非XA形式local-tx-datasource配置,则没有问题;若以xa-datasource配置,则无法生效,系统运行时不能取得connection;究其原因的话,是由于log4jdbc针对的是driver-class的封装,而不是datasource-class;所以对系统中使用XA的用户来说就无法使用该框架了,若一定要使用,只能修改成local-tx-datasource类型;

    PS:以下是相关链接地址
    log4jdbc:http://log4jdbc.sourceforge.net/
    slf4j:http://slf4j.org/

  • 相关阅读:
    Educational Codeforces Round 10 C. Foe Pairs 水题
    Educational Codeforces Round 10 B. z-sort 构造
    CDOJ 1048 Bob's vector 三分
    Educational Codeforces Round 10 A. Gabriel and Caterpillar 模拟
    第14届电子科大初赛民间盗版部分题目题解
    HDU 5654 xiaoxin and his watermelon candy 离线树状数组 区间不同数的个数
    HDU 5653 Bomber Man wants to bomb an Array. dp
    HDU 5652 India and China Origins 二分+并查集
    HDU 5651 xiaoxin juju needs help 数学
    HDU 5650 so easy 数学
  • 原文地址:https://www.cnblogs.com/azhqiang/p/4725272.html
Copyright © 2020-2023  润新知