一、引言

其实Druid的内置了log4jdbc来显示SQL语句,虽然显示效果不如原生的log4jdbc效果好,但是因为内置所以不需要其他更多的配置。

二、使用

1. 创建基于druid的logger
  1. <bean id="log-filter" class="com.alibaba.druid.filter.logging.Slf4jLogFilter">
  2. <property name="connectionLogEnabled" value="false"/>
  3. <property name="statementLogEnabled" value="false"/>
  4. <property name="resultSetLogEnabled" value="true"/>
  5. <property name="statementExecutableSqlLogEnable" value="true"/>
  6. </bean>
a. resultSetLogEnabled表示是否显示结果集。
b. statementExecutableSqlLogEnable 表示是否显示SQL语句。
2. 在 DruidDataSource中配置
  1. <!-- 数据连接池 -->
  2. <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
  3. .....
  4. <property name="filters" value="stat,wall"/>
  5. ......
  6. <property name="proxyFilters">
  7. <list>
  8. <ref bean="log-filter"/>
  9. </list>
  10. </property>
  11. </bean>
proxyFilters是代理filter的意思,将我们在第一步创建的log-filter写入进去。

三、log4j2中的设置

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- Log4j 2.x 配置文件。每30秒自动检查和应用配置文件的更新; -->
  3. <configuration status="warn" monitorInterval="30" strict="true" schema="Log4J-V2.2.xsd">
  4. <Properties>
  5. <Property name="logdir">${sys:catalina.base}/logs</Property>
  6. </Properties>
  7. <appenders>
  8. <!-- 输出到控制台 -->
  9. <console name="Console" target="SYSTEM_OUT">
  10. <!-- 需要记录的级别 -->
  11. <!-- <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY" /> -->
  12. <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %level [%C{36}.%M] - %msg%n"/>
  13. </console>
  14. <!-- 输出到文件,按天或者超过80MB分割 -->
  15. <rollingFile name="RollingFile" fileName="conerstone.log"
  16. filePattern="${logdir}/logs/$${date:yyyy-MM}/xjj-%d{yyyy-MM-dd}-%i.log.gz">
  17. <!-- 需要记录的级别 -->
  18. <!-- <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" /> -->
  19. <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %level [%C{36}.%M] - %msg%n"/>
  20. <policies>
  21. <onStartupTriggeringPolicy/>
  22. <timeBasedTriggeringPolicy/>
  23. <sizeBasedTriggeringPolicy size="1 MB"/>
  24. </policies>
  25. </rollingFile>
  26. </appenders>
  27. <loggers>
  28. <!-- 全局配置 -->
  29. <root level="info">
  30. <appenderRef ref="Console"/>
  31. <appenderRef ref="RollingFile"/>
  32. </root>
  33. <logger name="org.springframework.web" level="debug" additivity="false">
  34. <appenderRef ref="Console"/>
  35. </logger>
  36. <logger name="com.mc.core.service" level="debug" additivity="false">
  37. <appender-ref ref="Console"/>
  38. </logger>
  39. <!-- druid配置 -->
  40. <logger name="druid.sql.Statement" level="debug" additivity="false">
  41. <appender-ref ref="Console"/>
  42. </logger>
  43. <logger name="druid.sql.ResultSet" level="debug" additivity="false">
  44. <appender-ref ref="Console"/>
  45. </logger>
  46. </loggers>
  47. </configuration>
其中需要特别注意41行之后的代码,表示是否显示sql语句和结果,如果不想显示结果,可以在第一步中将resultSetLogEnabled 改为false

Druid搭配log4j2输出SQL语句和结果的更多相关文章

  1. yii2输出sql语句

    yii2如何输出具体的查询的sql语句: $query = User::find() ->where(['id'=>[1,2,3,4]) ->select(['username']) ...

  2. IBatis.net 输出SQL语句(七)

    一.IBatis.net输出SQL语句到控制台 输出IBatis.net生成的SQL语句到控制台,能够方便调试. 如果要想输出IBatis.net的SQL语句到控制台,那么只需要做如下配置即可: &l ...

  3. NHibernate输出SQL语句

    用了NHierbate之后,很少需要写原生的SQL语句,由于总是看不到SQL语句,所以有时候对SQL调优非常不利.因此产生了让NHibernate输出它所生成的SQL语句的想法,以便于后续调优. 一. ...

  4. Spring3+MyBatis3整合log4j无法输出SQL语句问题的解决

    今天遇到了跟下面文章一模一样的问题,下面文章的解决方案很好,在这里记录保存一下. Spring3+MyBatis3整合无法输出SQL语句问题的解决

  5. Ibatis.Net 输出SQL语句学习(七)

    一.IBatis.net输出SQL语句 输出IBatis.net生成的SQL语句,能够方便调试. 在MapperHelper类中添加GetSql方法: /// <summary> /// ...

  6. Egg上层框架CabloyJS是如何输出SQL语句日志的?

    背景 在Egg开发实践中,经常会遇到一个问题:如何查看刚刚执行过的Egg组装的原生SQL语句呢? 1. 现有方案 可以直接在项目的config配置文件中添加MySQL配置debug: true.这会启 ...

  7. hibernate log4j2输出sql带参数

    网上有很多是输出sql ,参数以?的形式,后面输出参数binding的log,还要自己拼接特别麻烦:这里整理下输出原生sql的方法.组件是log4jdbc 1: 修改pom.xml,确定有下面的配置, ...

  8. 使用Hibernate 拦截执行sql语句,并输出sql语句,获取sql语句

    重建包名 org.hibernate.type.descriptor.sql 重建类BasicBinder 代码如下 package org.hibernate.type.descriptor.sql ...

  9. Hibernate输出SQL语句以便调试

    配置方法:1.打开hibernate.cfg.xml文件编辑界面,在Properties窗口处,点击Add按钮,选择Show_SQL参数,输入值为True. *另外,如果按照同样的步骤,分别加入以下参 ...

随机推荐

  1. package.json中配置浏览器

    "browserlist":[ ">=1%", "last 2 versions" ],

  2. sbt打包Scala写的Spark程序,打包正常,提交运行时提示找不到对应的类

    sbt打包Scala写的Spark程序,打包正常,提交运行时提示找不到对应的类 详述 使用sbt对写的Spark程序打包,过程中没有问题 spark-submit提交jar包运行提示找不到对应的类 解 ...

  3. TCP、UDP数据包大小的限制

    版权声明:本文为灿哥哥http://blog.csdn.net/caoshangpa 原创文章,转载请标明出处. https://blog.csdn.net/caoshangpa/article/de ...

  4. HTML 学习笔记一

    一.学习HTML有什么用? 可以写网页,也就是网站上的一个页面. 二.HTML 代码是写给谁看的? HTML代码是给浏览器看的,当然,强大的人类也能看得懂,如果你觉得不累的话. 三.HTML的结构 & ...

  5. Caused by: java.io.IOException: Added a key not lexically larger than previous.

    为了重复这个实验,遇到不少坑 https://www.iteblog.com/archives/1889.html /** * Created by Administrator on 2017/8/1 ...

  6. C语言 · 企业奖金发放

    算法提高 企业奖金发放   时间限制:1.0s   内存限制:512.0MB      企业发放的奖金根据利润提成.利润低于或等于10万元时,奖金可提10%:利润高于10万元,低于20万元时,低于10 ...

  7. UltraEdit 常用快捷方式

    Ctrl+N :创建一个新文件 Ctrl+O :打开文件 Ctrl+Q :快速打开文件 Ctrl+F4 :关闭文件 Ctrl+S :保存活动文件 F12 :另存为 Ctrl+P :打印当前活动文件 C ...

  8. Spring WebSocket初探1 (Spring WebSocket入门教程)<转>

    See more: Spring WebSocket reference整个例子属于WiseMenuFrameWork的一部分,可以将整个项目Clone下来,如果朋友们有需求,我可以整理一个独立的de ...

  9. WinDbg F9时“code not found breakpoint not set”

    当使用Windbg 6.2.9200.16384 进行源码调试时,无法在代码文件中F9设置断点,会出现“code not found breakpoint not set”,我们只有启动下我们自己的驱 ...

  10. 【javascript】js 检验密码强度

    最近一直在做通行证项目,里面的注册模块中输入密码需要显示密码强度(低中高).今天就把做的效果给大家分享下,代码没有网上搜索的那么复杂,能够满足一般的需求. html 代码如下: <!DOCTYP ...