Springboot+JPA打印SQL日志

简介: Springboot+JPA打印SQL日志

pom.xml 添加lombox插件

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

application.yml 配置

# Spring
spring:
  #配置 Jpa
  jpa:
    show-sql: true #打印执行的sql语句,false则不打印sql
    properties:
      hibernate:
        ddl-auto: none
        dialect: org.hibernate.dialect.MySQL5InnoDBDialect
    open-in-view: true

logback.xml 配置

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 日志存放路径 -->
    <property name="log.path" value="/home/logs" />
    <!-- 日志输出格式 -->
    <property name="log.pattern" value="%d{HH:mm:ss.SSS} %-5level %logger{20}:%line - %msg%n" />

    <!-- 控制台输出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>

    <!-- 系统日志输出 -->
    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/run-info.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/run-info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 10天 -->
            <maxHistory>10</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>INFO</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/run-error.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/run-error.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 60天 -->
            <maxHistory>10</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>ERROR</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- 系统模块日志级别控制,可根据实际情况修改  -->
    <logger name="com.test" level="info" />
    <!-- Spring日志级别控制  -->
    <logger name="org.springframework" level="warn" />
    <!-- JPA日志级别控制,必须这样配置  -->
    <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"  />
    <logger name="org.hibernate.SQL" level="info" />
    <logger name="org.hibernate.engine.QueryParameters" level="info" />

    <!--系统操作日志-->
    <root level="info">
        <appender-ref ref="console" />
        <appender-ref ref="file_info" />
        <appender-ref ref="file_error" />
    </root>
</configuration>

效果

Hibernate: select bizactivit0_.id as id1_0_, bizactivit0_.code as code2_0_, bizactivit0_.content as content3_0_, bizactivit0_.create_time as create_t4_0_, bizactivit0_.creator as creator5_0_, bizactivit0_.enabled as enabled6_0_, bizactivit0_.end_time as end_time7_0_, bizactivit0_.name as name13_0_, bizactivit0_.sort as sort16_0_, bizactivit0_.start_time as start_t17_0_, bizactivit0_.status as status18_0_ from biz_activity bizactivit0_ where bizactivit0_.name like ? order by bizactivit0_.id desc limit ?
11:48:38.169 TRACE o.h.t.d.s.BasicBinder:64 - binding parameter [1] as [VARCHAR] - [%活动名称%]

活动名称 是从前端传过来的值,可以看到sql语句和查询参数

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
QGS
|
21天前
|
Java 数据库连接 Apache
Springboot日志框架logback与log4j2
Springboot日志框架logback与log4j2
QGS
21 0
|
22天前
|
存储 监控 安全
【Spring】SpringBoot日志
【Spring】SpringBoot日志
|
22天前
|
Java Spring
【Spring Boot】logback和log4j日志异常处理
【1月更文挑战第25天】【Spring Boot】logback和log4j日志异常处理
|
27天前
|
Java Unix 网络安全
Spring Boot整合Log4j做日志处理
Spring Boot整合Log4j做日志处理
29 0
|
1月前
|
SQL 关系型数据库 MySQL
MySQL SQL性能分析 慢查询日志、explain使用
MySQL SQL性能分析 慢查询日志、explain使用
28 0
|
1月前
|
XML Java API
忽视日志吃大亏,手把手教你玩转 SpringBoot 日志
一、日志重要吗 程序中的日志重要吗? 在回答这个问题前,笔者先说个事例: ❝ 笔者印象尤深的就是去年某个同事,收到了客户反馈的紧急bug。尽管申请到了日志文件,但因为很多关键步骤没有打印日志,导致排查进度很慢,数个小时都没能排查到问题,也无法给出解决对策。导致了客户程序一直阻断,最终产生了不少损失。 事后,经过仔细推敲,成功复现了这个bug,其实是一个很不起眼的数据转换导致的。可因为日志内容的匮乏,排查起来难度很大。其实只要在数据转换前后进行日志输出,这个问题就是一样的事。但可惜没如果,故事的最后,开发部门还是遭到了客户的投诉,影响到了部门绩效 ❞
|
1月前
|
Java 应用服务中间件 容器
SpringBoot 各种 Web 容器服开启 AccessLog 日志
SpringBoot 各种 Web 容器服开启 AccessLog 日志
19 0
|
2月前
|
Java Spring
spring boot 配置log4j 日志
spring boot 配置log4j 日志
31 0
|
2月前
|
Java
SpringBoot:第二篇 集成日志lombok
SpringBoot:第二篇 集成日志lombok
30 0
|
2月前
|
SQL 大数据 HIVE
每天一道大厂SQL题【Day09】充值日志SQL实战
每天一道大厂SQL题【Day09】充值日志SQL实战
21 0

相关产品

  • 云迁移中心