Jfinal中使用日志框架输出完整sql语句信息(mysql+oracle)

1、引入Jar包。

//必须引入的jar包

log4j-1.2.17.jar

log4jdbc4-1.2.jar

slf4j-api-1.7.5.jar

//二选一的jar包,如果你的项目中已经引入了其中任何一个,就不需要再引入另一个了。同时引入以上两个包会产生堆栈溢出问题,详情可参考这篇文档:

http://blog.csdn.net/kxcfzyk/article/details/38613861

slf4j-log4j12-1.7.5.jar

或者

log4j-over-slf4j-1.7.7.jar

2、修改数据库配置信息

-------------------------mysql-----------------------

jdbcUrl = jdbc:log4jdbc:mysql://127.0.0.1/mxtt?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull

user = root

password = root123

#devMode = true

#log4jdbc

driverClass=net.sf.log4jdbc.DriverSpy

-------------------------oracle----------------------

jdbcUrl = jdbc:log4jdbc:oracle:thin:@127.0.0.1:1521:ORC

user = scott

password = tiger

#devMode = true

#log4jdbc

driverClass=net.sf.log4jdbc.DriverSpy

3、修改jfinal核心配置类

-------------------------mysql----------------------

private static Prop p = PropKit.use("config.properties"); // 加载配置文件

public static DruidPlugincreateDruidPlugin() {

DruidPlugin dp =new DruidPlugin(p.get("jdbcUrl"), p.get("user"), p.get("password").trim());

dp.setDriverClass(p.get("driverClass"));

dp.addFilter(new StatFilter());

dp.addFilter(new Slf4jLogFilter());

WallFilter wall = new WallFilter();

wall.setDbType(JdbcUtils.MYSQL);

dp.addFilter(wall);

returndp;

}

public void configPlugin(Plugins me) {

// 配置C3p0数据库连接池插件

DruidPlugindruidPlugin = createDruidPlugin();

me.add(druidPlugin);

// 配置ActiveRecord插件

ActiveRecordPluginarp = new ActiveRecordPlugin(druidPlugin);

StringbaseSqlTemplatePath = PathKit.getWebRootPath()+"/WEB-INF/sql";

arp.setBaseSqlTemplatePath(baseSqlTemplatePath);

File[]files = new File(baseSqlTemplatePath).listFiles();

for(File f : files) {

if(f.isFile()&& f.getName().endsWith(".sql") ){

arp.addSqlTemplate(f.getName());

}

}

//    if(p.getBoolean("devMode", false)) {

//            arp.setShowSql(true);

//       }

// 所有映射在 MappingKit 中自动化搞定

_MappingKit.mapping(arp);

me.add(arp);

}

-------------------------oracle----------------------

private static Prop p = PropKit.use("config.properties"); // 加载配置文件

public static DruidPlugincreateDruidPlugin() {

DruidPlugin dp =new DruidPlugin(p.get("jdbcUrl"), p.get("user"), p.get("password").trim());

dp.setDriverClass(p.get("driverClass"));

dp.setValidationQuery("select 1 from dual");

dp.addFilter(new StatFilter());

dp.addFilter(new Slf4jLogFilter());

WallFilter wall = new WallFilter();

wall.setDbType(JdbcUtils.ORACLE);

dp.addFilter(wall);

returndp;

}

public void configPlugin(Plugins me) {

// 配置Druid数据库连接池插件

DruidPlugindruidPlugin = createDruidPlugin();

me.add(druidPlugin);

// 配置ActiveRecord插件

ActiveRecordPluginarp = new ActiveRecordPlugin(druidPlugin);

StringbaseSqlTemplatePath = PathKit.getWebRootPath()+"/WEB-INF/sql";

arp.setBaseSqlTemplatePath(baseSqlTemplatePath);

File[]files = new File(baseSqlTemplatePath).listFiles();

for(File f : files) {

if(f.isFile()&& f.getName().endsWith(".sql") ){

arp.addSqlTemplate(f.getName());

}

}

//    if(p.getBoolean("devMode", false)) {

//            arp.setShowSql(true);

//       }

//配置Oracle方言

arp.setDialect(new OracleDialect());

/*设置事务运行级别,Oracle数据库仅支持READCOMMITTED 和 SERIALIZABLE

TRANSACTION_NONE= 0;      //JDBC驱动不支持事务

TRANSACTION_READ_UNCOMMITTED= 1;  //允许脏读、不可重复读和幻读。

TRANSACTION_READ_COMMITTED= 2;  //禁止脏读,但允许不可重复读和幻读。

TRANSACTION_REPEATABLE_READ= 4; //禁止脏读和不可重复读,单运行幻读。

TRANSACTION_SERIALIZABLE = 8; //禁止脏读、不可重复读和幻读。

*/

arp.setTransactionLevel(2);

//配置属性名(字段名)大小写不敏感容器工厂 为true字段名都小写

arp.setContainerFactory(new CaseInsensitiveContainerFactory(true));

me.add(arp);

// 权限系统相关表以外的所有配置在_MappingKit中通过_JFinalGenerator自动生成

_MappingKit.mapping(arp);

}

4、修改日志输出配置文件(log4j.properties)

# log4j.rootLogger=WARN, stdout, file

log4j.rootLogger=ERROR, stdout, file

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%n%-d{yyyy-MM-ddHH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n

# Output to the File

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender

log4j.appender.file.DatePattern=‘_‘yyyy-MM-dd‘.log‘

log4j.appender.file.File=./mxtt.cc.log

log4j.appender.file.layout=org.apache.log4j.PatternLayout

log4j.appender.file.layout.ConversionPattern=%n%-d{yyyy-MM-ddHH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n

#输出sql语句和执行时间

log4j.logger.jdbc.sqltiming=INFO,console

#仅输出sql语句

#log4j.logger.jdbc.sqlonly=DEBUG,console

#log4j.logger.jdbc.connection=INFO,console

#log4j.appender.console=org.apache.log4j.ConsoleAppender

#log4j.appender.console.layout=org.apache.log4j.PatternLayout

#log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:ss.SSS} %m%n%n

最后附上jar包的下载地址:http://pan.baidu.com/s/1pLyl0Wb

http://www.mxtt.cc http://www.51fenxiang.xyz

时间: 2024-08-08 09:41:14

Jfinal中使用日志框架输出完整sql语句信息(mysql+oracle)的相关文章

一对一关联查询时使用relation连贯操作查询后,调用getLastSql()方法输出的sql语句

如题: 一对一关联查询时使用relation连贯操作查询后,调用getLastSql()方法输出的sql语句不是一条关联查询语句. 例如: $list = $db->relation(true)->where($where)->order('blogid desc')->limit($Page->firstRow.','.$Page->listRows)->select(); $sql = $db->getLastSql(); 输出的sql语句为: SELE

sql语句(MySQL)

本篇源自网络,整理了sql99标准中增删改查的sql语句以及MySQL特有的语句. 数据库--MySql 数据仓库.就与我们之前学过的纯文本,properties这些技术一样.用来保存数据.并提供对数据进行增删改查的操作.我们以后做项目时,项目中的数据都是保存在数据库中的.//--------------------------------------------------------------------为什么要用数据库,数据库的特点 1>实现数据共享 2>减少数据的冗余度 3>数

2.MySQL用户管理,常用SQL语句,MySQL数据库备份与恢复

[toc] MySQL用户管理,重用SQL语句,MySQL数据库备份与恢复 一.MySQL用户管理 1.创建一个普通用户并授权 首先启动mysql,然后进入 [[email protected] ~]# /etc/init.d/mysqld start Starting MySQL... SUCCESS! [[email protected] ~]# mysql -uroot -pxavilinux Warning: Using a password on the command line in

Linux centosVMware mysql用户管理、常用sql语句、mysql数据库备份恢复

一.mysql用户管理 grant all on *.* to 'user1'@'127.0.0.1' identified by 'mimA123'; 创建user1用户 使用user1登录 /usr/local/mysql/bin/mysql -uuser1 -pmimA123 -h127.0.0.1 变为localhost,不加-h也能登录 mysql> grant all on *.* to 'user1'@'localhost' identified by 'mimA123'; [[e

软件开发工程师(JAVA)中级考试大纲-----四(四)Log4J的原理及配置;Log4J常用的API;在项目中应用日志框架Log4J关键类和接口介绍;Java properties配置文件log

log4j Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件,甚至是套接口服务器.NT的事件记录器.UNIX Syslog守护进程等:我们也可以控制每一条日志的输出格式:通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程.最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码. 1定义 log4j--log for java(java的日志) 在强调可重用组件开发的今天,除了

SSM框架中使用日志框架

在 pom,xml 配置 Log4j jar 添加一个 mybatis_log.xml 文件 完整配置信息 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.

Java中的日志框架

需求 使用日志框架有三点需求: 1.期望日志能保存在文件中,方便时候排错. 2.开发环境的日志记录会更多方便调试. 3.生产环境需要记录重要的信息.   Log4j 可用于普通maven项目,也可以用于springboot项目. Log4j提供了简单的API调用,强大的日志格式定义以及灵活的扩展性. 可以自定义Appender来满足日志输出的需求. 日志级别 从低到高 DEBUG INFO WARN ERROR FATAL pom依赖 <!-- https://mvnrepository.com

记性不如烂笔头14-使用log4jdbc显示完整SQL语句和执行时间

系统在现网环境下运行,有时候会出现响应比较慢的情况,有时候是因为数据库引起的,有时候是由于中间件引起的,也有可能是别的原因引起的,对一个现网系统来说,响应速度是非常重要的,要能够及时方向慢的地方: 还是在现网环境中,特别是一些复杂的数据操作内容,可能不符合数据库的某一些条件导致错误,而我们一般使用ibatis,hibernate,spring这些工具打印的jdbc的sql日志信息,有一点个缺点是占位符与参数是分开打印的,如果想要拷贝sql至PLSQL Developer客户端直接执行,需要自己拼

使用MySQL的慢查询日志找到低效的SQL语句

如题,要开启mysql的慢查询日志可以在mysql的配置文件中的[mysqld]下设置两项: log-slow-queries = D:/soft/PHPnow/MySQL-5.1.50/test.log         long_query_time = 1 log-slow-queries表示日志册存储位置,long_query_time表示执行时间 单位是秒,这样设置后重启MySQL服务器,查询超过1秒的sql语句将会记录到日志中,需要注意的是log_query_time不能设置小数(经测