• JPA 使用log4j2输出SQL日志到文件


    上一篇介绍了 JPA 使用llogback输出SQL日志到文件, 这篇我们使用log4j:

    还使用上节的单元测试代码 :先修改一下POM:

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
                <exclusions>
                    <!-- 排除自带的logback依赖 -->
                    <exclusion>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-log4j2</artifactId>
            </dependency>

    通常的log4j2的配置文件如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration>
        <Appenders>
    
            <!--这个输出控制台的配置-->
            <console name="Console" target="SYSTEM_OUT">
                <!--输出日志的格式-->
                <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t{2}] %-5level %logger{4} - %msg%n"/>
            </console>
            <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
            <RollingFile name="RollingFileInfo" fileName="logs/cis-mr-audit.log"
                         filePattern="logs/$${date:yyyy-MM}/cis-mr-audit-%d{yyyy-MM-dd}-%i.log">
                <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
                <Policies>
                    <TimeBasedTriggeringPolicy/>
                    <SizeBasedTriggeringPolicy size="5 MB"/>
                </Policies>
            </RollingFile>
    
        </Appenders>
        <Loggers>
            <Root level="info">
                <AppenderRef ref="Console" />
                <AppenderRef ref="RollingFileInfo" />
            </Root>
        </Loggers>
    </Configuration>

    注意,这里没有对每一个的appender设置level,统一使用root的level.

    和上节一样,如果yml文件没有特殊配置的话,也是输出不了sql的。

    即使加了show-sql也只是在console中显示,在日志文件中不显示。

    同上节的配置样,问题出在org.hibernate.sql和org.hibernate.type.descriptor.sql.BasicBinder上

    修改yml配置文件:

    logging:
      level:
        root: info
        org:
          hibernate:
            SQL: debug   #debug时显示sql
            type:
              descriptor:
                sql:
                  BasicBinder: trace  #trace时,显示参数

    这样console与文件中的sql就都可以显示了,在生产切换日志级别,只需要修改yml文件即可。

  • 相关阅读:
    新年第一个工作日,淦一个扫码登录
    eltree 从叶子节点入手解决选中问题
    elcascader 级联选择器 :回显回显回显
    VueX Module:路过你,忘记你
    我变成了曾经最讨厌的模样:路由屎山有感,Next 你是风暴也是风暴眼
    取小数点后两位:打造一个自己的toFixed
    dayjs: 兄弟moment.js寄了,我还在
    前端鄙视题
    android WebView的配置
    springboot自定义通用枚举校验注解
  • 原文地址:https://www.cnblogs.com/hankuikui/p/12850598.html
Copyright © 2020-2023  润新知