log4jdbc 和 sqlfx

log4jdbc是我们公司sqlfx的基础构件,下面我来介绍一下他们之间的联系和作用

实现原理

net.sf.log4jdbc.DriverSpy这个类实现了JDBC的Driver接口,代理了原来数据库的驱动
而实现了SpyLogDelegator接口的策略通过配置文件log4jdbc.log4j2.properties打印日志,下面简述一下jdbc4log的配置

配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 原来数据库的实际驱动名
log4jdbc.drivers=net.sourceforge.jtds.jdbc.Driver
# 将所有堆栈打出,这个会输出大量信息
log4jdbc.dump.fulldebugstacktrace=false
# 显示实际调用类的包前缀,jdbc4log会打印堆栈中第一个符合这个正则的调用类
log4jdbc.debug.stack.prefix=^com\.thunisoft\.np\.fy.*
# sql分割的最大行数
log4jdbc.dump.sql.maxlinelength=150
# 调用的日志策略,如果要使用sqlfx3.0需要使用蔡海滨编写的类
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
# 执行时间超过这个级别的日志将被输出为warn级别
log4jdbc.sqltiming.warn.threshold=100
# 执行时间超过这个级别的日志将被输出为error级别
log4jdbc.sqltiming.error.threshold=100

SQLFX

SQLFX是我们公司为了DBA方便的分析项目中不规范的sql而编写的软件,主要由两部分组成client和server

client的作用类似于ELK中的Filebeat,每天晚上定时(可在服务端配置)将log4jdbc日志压缩后发送到服务端

server则定时解析client发送上来的log4jdbc日志生成报告并发邮箱给DBA