默认情况下,使用ibatis是不打印ibatis相关的log的,因为内部的sql执行都是内部调用,在server的控制台是不 会 打印log的。

在log4j的配置文件log4j.properties里加上以下几句话就可以了:

log4j.rootLogger=DEBUG,stdout,logfile

log4j.logger.com.bill99.base=INFO

log4j.logger.com.bill99.ctmp=INFO

log4j.logger.com.bill99.golden.inf.sso=INFO

log4j.logger.com.bill99.mdp=INFO

log4j.logger.com.bill99=INFO

#log4j.additivity.com.bill99=false

log4j.appender.logfile=org.apache.log4j.RollingFileAppender

log4j.appender.logfile.File=e\:\\opt\\log\\app-coe-prm.log

log4j.appender.logfile.MaxFileSize=10MB

# Keep three backup files.

log4j.appender.logfile.MaxBackupIndex=3

# Pattern to output: date priority [category] - message

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

log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%p] %t [%l]%m%n

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

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

log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

#   SqlMap   logging   configuration...

log4j.logger.java.sql.Connection=INFO

log4j.logger.java.sql.Statement=INFO

log4j.logger.java.sql.PreparedStatement=INFO

log4j.logger.java.sql.ResultSet=INFO

使用如下配置可以查看sql语句中?代表的实际参数:

### direct log messages to stdout ###

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

log4j.appender.stdout.Target=System.out

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

log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

log4j.logger.org.hibernate=debug

log4j.logger.org.hibernate.hql.ast.AST=debug

#下面的两条配置非常重要,设置为trace后,将可以看到打印出sql中 ? 占位符的实际内容

#this is the most important config for showing parames like ?

log4j.logger.org.hibernate.SQL=trace

log4j.logger.org.hibernate.type=trace

#above two configs

log4j.logger.org.hibernate.tool.hbm2ddl=debug

log4j.logger.org.hibernate.hql=debug

log4j.logger.org.hibernate.cache=debug

log4j.logger.org.hibernate.transaction=debug

log4j.logger.org.hibernate.jdbc=debug

log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace

log4j.rootLogger=warn, stdout

log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=TRACE                                        log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.Target=System.out

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

log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

log4j.logger.org.hibernate=debug

log4j.logger.org.hibernate.hql.ast.AST=debug

#下面的两条配置非常重要,设置为trace后,将可以看到打印出sql中 ? 占位符的实际内容

#this is the most important config for showing parames like ?

log4j.logger.org.hibernate.SQL=trace

log4j.logger.org.hibernate.type=trace

#above two configs

log4j.logger.org.hibernate.tool.hbm2ddl=debug

log4j.logger.org.hibernate.hql=debug

log4j.logger.org.hibernate.cache=debug

log4j.logger.org.hibernate.transaction=debug

log4j.logger.org.hibernate.jdbc=debug

log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace

log4j.rootLogger=warn, stdout

log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=TRACE

也可以使用p6spy,它可以拦截所有执行的 SQL 语句,而不管你使用的是什么 ORM 框架。对于 PrepareStatement 那样带参数(?) 的语句,它会帮你代上相应的参数值。

p6spy 的主页是http://sourceforge.net/projects/p6spy/,它支持当前流行的应用服务器,如 JBoss、Orion、Tomcat、WebLogic、WebSphere 等,将spy.properties和p6spy.jar,拷贝到classes根目录和lib目录就可以了,其实不用太在意 p6spy 的安装说明,关键是要了解了某个应用服务器本身,要搞清楚的一个问题是“谁在加载

p6spy 包,从哪里加载”,那么配置 p6spy 就不成问题了,你甚至可以把 p6spy 用在独立的 Java 应用程序中。

p6spy 可以输出日志到文件中、控制台、或者传递给 Log4j,而且还能配搭 SQL Profiler 或 IronTrackSQL 图形化监控 SQL 语句,监测到哪些语句的执行是耗时的,逐个优化。关于与 SQL Profiler 或 IronTrackSQL 的配合使用可参数文件的链接。

如果在你的应用程序启动后,却在 spy.log 文件中发现了如下的提示信息,那就是驱动程序加载先后的问题了。

is a real driver in spy.properties, but it has been loaded before p6spy. p6spy will not wrap these connections. Either prevent the driver from loading, or try setting'deregisterdrivers' to true in spy.properties

请把 spy.properties 配置文件里的

deregisterdrivers=false

改为

deregisterdrivers=true

,重新运行即可。

这是因为有些应用系统中会先于 P6Spy 加载了真正的数据库的驱动程序,导致 P6Spy 无法监控到,设置

deregisterdrivers

为 true ,是显式地把真正的数据库的驱动程序进行反注册掉,而采用 P6Spy 的驱动程序。

下表列出了 spy.properties 配置文件中的各配置项的名称、默认值及其意义和相关注意事项:

配置项名称 默认值 配置项意义及相关注意事项

module.log com.p6spy.engine.logging. P6LogFactory 用来拦截和记录任务应用程序的 JDBC 语句。若无配置或注释掉则无此功能。

module.outage com.p6spy.engine.outage. P6OutageFactory 检测和记录执行时间比较长的 SQL 语句。若无配置或注释掉则无此功能。

realdriver   真正的应用系统使用的数据库驱动程序名称。

realdriver2   真正的应用系统使用的第二种备用数据库驱动程序名称。

realdriver3   真正的应用系统使用的第三种备用数据库驱动程序名称。

deregisterdrivers false 显示地把真正的数据库的驱动程序进行反注册掉。取值 true| false

executionthreshold   P6Log 模块执行时间设置,整数值 (以毫秒为单位),只有当超过这个时间才进行记录 Log。

outagedetection false P6Outage 模块是否记录较长时间运行的语句。取值 true| false

outagedetectioninterval   P6Outage 模块执行时间设置,整数值 (以秒为单位)),只有当超过这个时间才进行记录 Log。

filter false 是否过滤 Log,取值 true| false

include   过滤 Log 时所包含的表名列表,以逗号分隔。

exclude   过滤 Log 时所排除的表名列表,以逗号分隔。

sqlexpression   过滤 Log 时的 SQL 表达式名称

autoflush true 是否自动刷新。取值 true| false

dateformat   设置时间的格式,也就是用 Java 的 SimpleDateFormat 程序。

includecategories   显示指定过滤 Log 时包含的分类列表,取值为 error,info,batch,debug,statement,commit,rollback,result 的各种组合。

excludecategories   显示指定过滤 Log 时排队的分类列表,取值同上。

stringmatcher   使用正则表达式来过滤 Log,取值为 com.p6spy.engine.common.GnuRegexMatcher 和 com.p6spy.engine.common.JakartaRegexMatcher

stacktrace false 打印堆栈跟踪信息。取值 true| false

stacktraceclass   如果 stacktrace=true,则可以指定具体的类名来进行过滤。

reloadproperties false 监测属性配置文件是否进行重新加载。取值 true| false

reloadpropertiesinterval 60 属性配置文件重新加载的时间间隔,以秒为单位。

useprefix false 是否加上前缀,设置为 true,会加上 p6spy: 作为前缀。取值 true| false

appender com.p6spy.engine.logging. appender.FileLogger 指定 Log 的 appender,与 Log4J 有点同义,取值:com.p6spy.engine.logging.appender.Log4jLogger、 com.p6spy.engine.logging.appender.StdoutLogger 和 com.p6spy.engine.logging.appender.FileLogger

logfile spy.log 指定 Log 的文件名,任何适于操作系统的文件。

append true 指定是否每次是增加 Log,设置为 false 则每次都会先进行清空。取值 true| false

log4j.appender.STDOUT org.apache.log4j.ConsoleAppender 当 appender 为 log4j 时采用的配置,配置如同 Log4J 的相关配置。

log4j.appender.STDOUT.layout org.apache.log4j.PatternLayout 同上

log4j.appender.STDOUT. layout.ConversionPattern p6spy - %m%n 同上

log4j.logger.p6spy INFO,STDOUT Log 级别的设置,取值同 Log4J 的配置

realdatasource   设置数据源 DataSource 的配置名称。

realdatasourceclass   设置数据源 DataSource 的类的全称。

realdatasourceproperties   设置数据源 DataSource 的属性,以分号分隔。

jndicontextfactory   设置 JNDI 数据源的 NamingContextFactory。

jndicontextproviderurl   设置 JNDI 数据源的提供者的 URL。

jndicontextcustom   设置 JNDI 数据源的一些定制信息,以分号分隔。

java 日志打印sql语句_利用log4j打印sql的log日志相关推荐

  1. python对excel增删改查语句_利用python模拟sql语句对员工表格进行增删改查

    本文主要给大家介绍了关于python模拟sql语句对员工表格进行增删改查的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 具体需求: 员工信息表程序,实现增删改查操作: 可进行模糊查询, ...

  2. java代码执行mysql语句_三种执行SQL语句的的JAVA代码

    问题描述: 连接数据库,执行SQL语句是必不可少的,下面给出了三种执行不通SQL语句的方法. 1.简单的Statement执行SQL语句.有SQL注入,一般不使用. public static voi ...

  3. java中sql语句怎么把开始和结束时间作为参数写sql查询_聊一聊MyBatis 和 SQL 注入间的恩恩怨怨

    整理了一些Java方面的架构.面试资料(微服务.集群.分布式.中间件等),有需要的小伙伴可以关注公众号[程序员内点事],无套路自行领取 引言 MyBatis 是一种持久层框架,介于 JDBC 和 Hi ...

  4. linux系统sql语句报错_linux之SQL语句简明教程---CREATE VIEW

    视观表 (View) 可以被当作是虚拟表格.它跟表格的不同是,表格中有实际储存资料,而视观表是建立在表格之上的一个架构,它本身并不实际储存资料. 建立一个视观表的语法如下: CREATE VIEW & ...

  5. mysql创建用户表的sql语句,mysql创建表的sql语句

    mysql 动态sql语句,如何用一款小工具大大加速MySQL SQL语句优化(附源,mysql分页查询sql语句,mysql创建表的sql语句 mysql建表语句_计算机软件及应用_IT/计算机_专 ...

  6. SQL语句大全,所有的SQL都在这里(1.5万字长文)

    SQL语句大全,所有的SQL都在这里 本文转摘自微信公众号Python数据科学,仅供学习备份用 https://mp.weixin.qq.com/s/6j-bxhxoU7SKl4LqSDRvyQ 一. ...

  7. 如何分表分库 Mycat 与shadingjdbc 区别? Mycat 是基于服务器端的形式实现数据库代理 基于服务器端的形式 改写sql语句 shadingjdbc 基于客户端 改写sql语

    如何分表分库 Mycat 与shadingjdbc 区别? Mycat 是基于服务器端的形式实现数据库代理 基于服务器端的形式 改写sql语句 shadingjdbc 基于客户端 改写sql语句的形式 ...

  8. SQL语句的优化(常规SQL语句的优化)

    SQL语句的优化(常规SQL语句的优化) 一.常规SQL语句的优化 1.1.不用 " * " 代替所有的列名.因为这样操作的时候 ,系统会通过数字字典将" * " ...

  9. sql语句执行效率测试的sql语句。

    sql语句执行效率测试的sql语句. 注解: SET STATISTICS PROFILE ON:显示分析.编译和执行查询所需的时间(以毫秒为单位). SET STATISTICS IO ON:报告与 ...

最新文章

  1. hdu 5366 简单递推
  2. net user administrator /passwordreq:yes出现语法错误
  3. DeepID2——强大的人脸分类算法
  4. ListView控件学习系列2-编辑ListView(Edit,Update,Insert,Delete)
  5. VS中安装DevExpress后在Winform的工具箱中不显示控件
  6. Mozilla工程师观点:开源不赚钱,因为它不是为赚钱而设计的
  7. 快速上手Linux核心命令(四):文件内容相关命令
  8. 第十五章:进程间通信
  9. sqlite3源码调试
  10. 如何将txt文件迅速转为Excel文件
  11. ORA-00257错误解决方法
  12. 在线更换背景网站(白色背景换为蓝色背景证件照)
  13. 第一次结对编程作业——需求分析与原型设计
  14. 计算机硕士论文解读,计算机专业硕士论文提纲范文大全 计算机专业硕士论文提纲如何写...
  15. android vr sdk 架构,PowerVR图形SDK v4.0及工具终于问世
  16. BLDC电机中的死区时间究竟是什么?
  17. yocto运行时依赖规则
  18. 修炼内功的融云,以通讯中台赋能企业数字化升级
  19. PL2303HX在Windows 10下面不装安装驱动的解决办法(Code:10)
  20. badboy脚本开发事件

热门文章

  1. 图片处理(一)之BMP格式24bit转16bit
  2. 20220714 三相异步交流电动机基础学习
  3. Python 数据挖掘与机器学习进阶实训-3-韦玮-专题视频课程
  4. 九宫格的填法和数独的验证
  5. swift 常用动画
  6. 在写网页的时候总是发现对不齐,试试这个办法
  7. html中关于title href bgcolor的用法
  8. Origin 基本操作:在曲线图上添加各种标注的方法
  9. UPC-6467 Many Formulas(深搜暴力)
  10. IntelliJ IDEA 2019 激活注册码(可用)截至到5月4号