log4j2不打印日志Druid搭配log4j2输出SQL语句和结果
    一、引言其实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>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>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}-%">            <!-- 需要记录的级别 -->            <!-- <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>        <l
ogger name="org.springframework.web" level="debug" additivity="false">            <appenderRef ref="Console"/>        </logger>        <logger name="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>其中需要特别注意41行之后的代码,表示是否显示sql语句和结果,如果不想显示结果,可以在第一步中将resultSetLogEnabled 改为false

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。