【JPA设置日志级别】

JPA日志级别设置

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

现在流行使用Mybatis,之前历史遗留项目有用到JPA,但是日志信息中打印了很多不需要的信息,无法关闭,所以大致去了解了下,网上很多乱七八糟的信息,经常答非所问,所以我自己去查询了下,给大家一些参考.


提示:以下是本篇文章正文内容,下面案例可供参考

一、需求

一般存在如下slq日志打印需求,一是将sql日志打印出来,二是打印周边的数据库信息.

二、使用步骤

1.设置sql打印

有好几种配置方式,有使用properties,有使用yml,有使用xml的,其实大同小异,这边简单介绍下yml格式的情况.
yam文件下配置基础日志级别信息:
logging:
level:
root: info
数据库信息配置:
spring:
jpa:
database: MySQL
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
show-sql: false
hibernate:
ddl-auto: update
注意通过show-sql配置为true即可显示sql信息.

2.结合SLF4J

现在大部分时候日志信息都集成slf4j
配置如下(可直接复制使用):

<?xml version="1.0" encoding="UTF-8"?>
<!--默认配置-->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>

<!--配置控制台(Console)-->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!-- encoder的默认实现类是ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
    </encoder>
</appender>

<!--配置日志文件(File)-->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!--设置策略-->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!--日志文件路径:这里%d{yyyyMMdd}表示按天分类日志-->
        <FileNamePattern>${LOG_HOME}/%d{yyyyMMdd}/${APP_NAME}.log</FileNamePattern>
        <!--日志保留天数-->
        <MaxHistory>15</MaxHistory>
    </rollingPolicy>
    <!--设置格式-->
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        <!-- 或者使用默认配置 -->
        <!--<pattern>${FILE_LOG_PATTERN}</pattern>-->
        <charset>utf8</charset>
    </encoder>
    <!--日志文件最大的大小-->
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <MaxFileSize>100MB</MaxFileSize>
    </triggeringPolicy>
</appender>

<!-- 多环境配置 按照active profile选择分支 -->

<!--root节点 全局日志级别,用来指定最基础的日志输出级别-->
<root level="ERROR">
    <appender-ref ref="FILE"/>
    <appender-ref ref="STDOUT"/>
</root>
<logger name="org.hibernate.dialect" level="ERROR"/>

总结

笔者在打印数据库日志信息时,主要遇到两个坑:
1、一个工程下,其中一个子模块的日志信息始终不打印,而debug根据log4j中发现其实日志级别和日志信息都在,唯独不展示出来,新增控制台的配置即可
2、方言信息始终显示,尝试多种方式关闭无效,加上配置即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值