Druid搭配log4j2输出SQL语句和结果
2017-03-20 23:54
197 查看
一、引言
其实Druid的内置了log4jdbc来显示SQL语句,虽然显示效果不如原生的log4jdbc效果好,但是因为内置所以不需要其他更多的配置。二、使用
1. 创建基于druid的logger<bean id="log-filter" class="com.alibaba.druid.filter.logging.Slf4jLogFilter">
<property name="connectionLogEnabled" value="false"/>
<property name="statementLogEnabled" value="false"/>
<property name="resultSetLogEnabled" value="true"/>
<property name="statementExecutableSqlLogEnable" value="true"/>
</bean>
[/code]a. resultSetLogEnabled表示是否显示结果集。b. statementExecutableSqlLogEnable 表示是否显示SQL语句。2. 在 DruidDataSource中配置
<!-- 数据连接池 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
.....
<property name="filters" value="stat,wall"/>
......
<property name="proxyFilters">
<list>
<ref bean="log-filter"/>
</list>
</property>
</bean>
[/code]proxyFilters是代理filter的意思,将我们在第一步创建的log-filter写入进去。
三、log4j2中的设置
<?xml version="1.0" encoding="UTF-8"?>
<!-- Log4j 2.x 配置文件。每30秒自动检查和应用配置文件的更新; -->
<configuration status="warn" monitorInterval="30" strict="true" schema="Log4J-V2.2.xsd">
<Properties>
<Property name="logdir">${sys:catalina.base}/logs</Property>
</Properties>
<appenders>
<!-- 输出到控制台 -->
<console name="Console" target="SYSTEM_OUT">
<!-- 需要记录的级别 -->
<!-- <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY" /> -->
<PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %level [%C{36}.%M] - %msg%n"/>
</console>
<!-- 输出到文件,按天或者超过80MB分割 -->
<rollingFile name="RollingFile" fileName="conerstone.log"
filePattern="${logdir}/logs/$${date:yyyy-MM}/xjj-%d{yyyy-MM-dd}-%i.log.gz">
<!-- 需要记录的级别 -->
<!-- <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" /> -->
<PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %level [%C{36}.%M] - %msg%n"/>
<policies>
<onStartupTriggeringPolicy/>
<timeBasedTriggeringPolicy/>
<sizeBasedTriggeringPolicy size="1 MB"/>
</policies>
</rollingFile>
</appenders>
<loggers>
<!-- 全局配置 -->
<root level="info">
<appenderRef ref="Console"/>
<appenderRef ref="RollingFile"/>
</root>
<logger name="org.springframework.web" level="debug" additivity="false">
<appenderRef ref="Console"/>
</logger>
<logger name="com.mc.core.service" level="debug" additivity="false">
<appender-ref ref="Console"/>
</logger>
<!-- druid配置 -->
<logger name="druid.sql.Statement" level="debug" additivity="false">
<appender-ref ref="Console"/>
</logger>
<logger name="druid.sql.ResultSet" level="debug" additivity="false">
<appender-ref ref="Console"/>
</logger>
</loggers>
</configuration>
[/code]其中需要特别注意41行之后的代码,表示是否显示sql语句和结果,如果不想显示结果,可以在第一步中将resultSetLogEnabled 改为false
相关文章推荐
- 将根据字符查询转换后输出结果,规则为:’A’转换为’男’,’B’转换为’女’,其他字符转换为’未知’,请用一个SQL语句写出。
- oracle的结果输出单引号 ' 的字符 的sql语句
- mybatis执行查询语句查询不到结果,控制台输出sql语句复制到数据库中能查到数据
- mybatis执行查询语句查询不到结果,控制台输出sql语句复制到数据库中能查到数据
- oracle的结果输出单引号字符 的sql语句
- [SQL]把几个select语句的结果集合到一起输出
- mybatis执行查询语句查询不到结果,控制台输出sql语句复制到数据库中能查到数据
- 如何在脚本中执行SQL语句并获得结果输出?
- sql如何巧妙用case语句做输出目标结果--蠢萌蠢萌
- 非常简单,让log4j输出mybatis的sql语句和执行结果
- sql语句 自己编写一个函数reversion,完成颠倒一个字符串,即:select dbo.reversion('abcd') 输出的结果为 dcba
- Django 调试models 输出的SQL语句 定位查看结果
- sql语句查询结果合并union 和union all用法
- SQL邮件自动应答(根据收到的邮件中的查询语句回复语句执行结果)
- 查询结果分页显示的sql语句
- 关于SQL中 动态执行SQL语句并且获得动态SQL语句输出参数值的问题
- SQL语句查询结果由行变为列
- 将oracle SQL语句执行结果导入文本文件
- 在查询结果中添加一列表示记录的行数的sql语句
- sql语句查询结果合并unionall用法