美文网首页
spring boot 集成log4jdbc 查看完整sql

spring boot 集成log4jdbc 查看完整sql

作者: 鹅鹅鹅_ | 来源:发表于2019-05-08 16:41 被阅读0次

不知道你有没有见过如下的sql日志,参数全是?,调试起来真是抓狂。

select id, message_key, message_type, message_content, create_time, update_time, retry_times, message_status
 
 from t_message
 WHERE message_status = 'PENDING'
 
 and message_type = ? 
 order by create_time asc
 limit ?

还好我没可以使用log4jdbc进行简单的配置,以打印完整的sql。

1、添加pom.xml依赖

<dependency>
        <groupId>com.googlecode.log4jdbc</groupId>
        <artifactId>log4jdbc</artifactId>
        <version>1.2</version>
</dependency>

2、替换原有的数据库配置 application.properties

# mysql数据库配置
#spring.datasource.url=jdbc:mysql://localhost:3306/moshop
#spring.datasource.username=root
#spring.datasource.password=123456
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
 
 
# log4jdbc数据库配置
spring.datasource.url=jdbc:log4jdbc:mysql://localhost:3306/moshop
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=net.sf.log4jdbc.DriverSpy

3、这样就配置好log4jdbc,启动程序,可以看到完整sql🌶

2019-05-08 16:39:45 [schedulerFactoryBean_Worker-4] INFO  jdbc.sqlonly - select id, message_key, message_type, message_content, create_time, update_time, retry_times, 
message_status from t_message WHERE message_status = 'PENDING' and message_type = 'MB_Notification' 
order by create_time asc limit 20 

4、默认log4jdbc的日志输出输出resultset,和数据库的链接信息,这些信息在我们项目中没有多大的意义

2019-05-08 16:40:45 [Druid-ConnectionPool-Create-809458919] INFO  jdbc.resultset - 5. ResultSet.new ResultSet returned 
2019-05-08 16:40:45 [Druid-ConnectionPool-Create-809458919] INFO  jdbc.audit - 5. Statement.executeQuery(select 'x') returned net.sf.log4jdbc.ResultSetSpy@6cfea904
2019-05-08 16:40:45 [Druid-ConnectionPool-Create-809458919] INFO  jdbc.resultset - 5. ResultSet.next() returned true
2019-05-08 16:40:45 [Druid-ConnectionPool-Create-809458919] INFO  jdbc.resultset - 5. ResultSet.close() returned 
2019-05-08 16:40:45 [Druid-ConnectionPool-Create-809458919] INFO  jdbc.audit - 5. Statement.close() returned 
2019-05-08 16:40:45 [Druid-ConnectionPool-Create-809458919] INFO  jdbc.audit - 5. Connection.getAutoCommit() returned true
2019-05-08 16:40:45 [Druid-ConnectionPool-Create-809458919] INFO  jdbc.audit - 5. Connection.getHoldability() returned 2
2019-05-08 16:40:45 [Druid-ConnectionPool-Create-809458919] INFO  jdbc.audit - 5. Connection.isReadOnly() returned false
2019-05-08 16:40:45 [Druid-ConnectionPool-Create-809458919] INFO  jdbc.audit - 5. Connection.getTransactionIsolation() returned 2
20

可以在logback配置文件中把这些信息关掉

<!--日志打印的包的范围,及分类日志文件存储 -->
    <logger name="com.example" level="INFO" additivity="false">
        <appender-ref ref="STDOUT" />
    </logger>
 
    <logger name="jdbc.sqlonly" level="INFO" additivity="false">
        <appender-ref ref="STDOUT" />
    </logger>
 
    <logger name="jdbc.resultset" level="ERROR" additivity="false">
        <appender-ref ref="STDOUT" />
    </logger>
 
    <logger name="jdbc.connection" level="OFF" additivity="false">
        <appender-ref ref="STDOUT" />
    </logger>
 
    <logger name="jdbc.sqltiming" level="OFF" additivity="false">
        <appender-ref ref="STDOUT" />
    </logger>
 
    <logger name="jdbc.audit" level="OFF" additivity="false">
        <appender-ref ref="STDOUT" />
    </logger>  

完整的logback.xml

<?xml version="1.0" encoding="UTF-8"?>

<configuration scan="true" scanPeriod="60 seconds" debug="false">

    <contextName>logback</contextName>

    <property name="log.path" value="${LOG_PATH:-.}"/>
    <springProperty scope="context" name="appName" source="spring.application.name" defaultValue="ApplicationName"/>
    <springProperty scope="context" name="applicationStack" source="application.stack" defaultValue="beta"/>
    <springProperty scope="context" name="smtpHost" source="spring.mail.host"/>
    <springProperty scope="context" name="smtpPort" source="spring.mail.port"/>
    <springProperty scope="context" name="mailFrom" source="spring.mail.username"/>
    <springProperty scope="context" name="username" source="spring.mail.username"/>
    <springProperty scope="context" name="mailTo" source="tendency.system.emails"/>
    <springProperty scope="context" name="password" source="spring.mail.password"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoder默认配置为PartternLayoutEncoder -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <charset>UTF-8</charset>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} -
                %msg%n</pattern>
        </encoder>
    </appender>
    <appender name="logfile"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/server.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/server_%d{yyyy-MM-dd}.%i.log
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>10</maxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}
                - %msg%n</pattern> -->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="transaction_file"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/transaction.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/transaction_%d{yyyy-MM-dd}.%i.log
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>10</maxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}
                - %msg%n</pattern> -->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="MAIL" class="ch.qos.logback.classic.net.SMTPAppender">
        <smtpHost>${smtpHost}</smtpHost>
        <smtpPort>${smtpPort}</smtpPort>
        <username>${username}</username>
        <password>${password}</password>
        <SSL>true</SSL>
        <asynchronousSending>true</asynchronousSending>
        <to>${mailTo}</to>
        <from>${mailFrom}</from>
        <subject>${appName}-[ERROR]</subject>
        <layout class="ch.qos.logback.classic.html.HTMLLayout"/>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
    </appender>


    <logger name="com.eee" level="INFO" additivity="false">
        <appender-ref ref="transaction_file" />
        <appender-ref ref="STDOUT" />
        <appender-ref ref="MAIL"/>
    </logger>
    <logger name="com.eee" level="DEBUG" additivity="false">
        <appender-ref ref="logfile" />
        <appender-ref ref="transaction_file" />
        <appender-ref ref="STDOUT" />
        <appender-ref ref="MAIL"/>
    </logger>
    <root level="ERROR">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="logfile" />
        <appender-ref ref="MAIL"/>
    </root>

    <logger name="org.mybatis" level="INFO" additivity="true">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="logfile"/>
        <appender-ref ref="MAIL"/>
    </logger>

</configuration>

相关文章

网友评论

      本文标题:spring boot 集成log4jdbc 查看完整sql

      本文链接:https://www.haomeiwen.com/subject/eflvoqtx.html