Skip to end of metadata
Go to start of metadata

概述

SQL日志记录模块可以记录系统指定的某个DataSource产生的SQL信息,这样用户只需要将自己需要进行SQL日志记录的DataSource填入到配置文件当中,就可以实现对SQL日志的记录。对于SQL日志的记录采用的是基于模块ID、分天记录的方式进行的,记录的文件格式为CSV,我们知道CSV格式是可以通过Excel打开,所以就可以方便对于SQL日志信息进行分析处理。

SQL日志记录时,可以记录当前调用人、SQL产生的模块ID、记录时间、当前SQL的执行时间(以ms为单位)以及客户端IP地址等信息。同时,当前模块还提供了将生成的SQL日志文件(csv格式文件)导入到数据库中的功能,这样就方便我们对SQL进行各种维度的分析处理。

配置

首先需要下载BDF的发行包,将其中的log目录下bin下的com.bstek.bdf.log-[version].jar文件放到应用的WEB-INF/lib目录下,BDF框架中所有模块都需要依赖于core模块,所以在使用SQL日志的时候需要配置好core模块。

接下来,我们就需要来配置当前需要对哪些DataSource进行SQL日志记录,具体配置方法就是在应用的WEB-INF/dorado-home/下添加了一个名为bdf.properties的属性配置文件,该文件当中可配置的值如下表所示:

属性名

描述

bdf.sqlspy.dir

SQL日志文件存放路径,默认值为"/WEB-INF/logs/sql",也就是当前应用的WEB-INF/logs/sql目录下,当前我们也可以指定其它地址,比如一个绝对路径:F:/logs/sql,如果这个目录存在的话,那么SQL日志文件将放在F盘中的logs/sql目录下

bdf.sqlspy.dataSources

要进行SQL日志记录的dataSource列表,比如bdf.dataSource,这就表示将对BDF框架当中的名为bdf.dataSource的bean对应的数据源进行SQL日志记录,也就是说这里的属性值一定要是配置在Spring当中的一个Bean,并且这个Bean一定要是一个java.sql.DataSource类型。如果需要对多个DataSource进行SQL日志记录,那么这里值就是多个dataSource的bean的ID,之间用逗号分隔即可,比如:ds1,ds2

这些配置完成之后,接下来需要在目录数据库中执行发行包中sql/dbschema目录下的bdf-log-dbname.sql文件以及bdf-log-init.sql文件,执行成功之后就可以启用应用进行测试,这里有一点需要注意,所以需要记录的SQL日志模块,必须要设置当前模块ID,也就是需要调用ContextHolder的setMid方法设置当前的模块ID。

在SQL日志记录模块当中还提供了相关过滤功能,打开数据库中的bdf_preferences表,可以看到有五个以sql.开头的属性名,它们的具体含义如下:

属性名

描述

sql.log.enabled

是否启用SQL日志记录功能,如果这里的值不为Y,那么不管有没有配置dataSource,都不会进行SQL日志记录,它的默认值为Y

sql.log.mids

仅对当前属性所列的模块ID产生的SQL进行日志记录,多个模块之间用逗号分隔

sql.log.usernames

仅记录该属性所列的用户操作产生的SQL,多个用户名之间用逗号分隔

sql.unlog.mids

不记录该属性所列模块ID产生的SQL,多个模块ID之间用逗号分隔

sql.unlog.usernames

不记录该属性所列的用户名操作产生的SQL,多个用户名之间用逗号分隔

Labels
  • No labels