• 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文件即可。

  • 相关阅读:
    说话
    批处理程序判断命令返回结果 Virus
    摘抄:.NET垃圾回收和资源管理 Virus
    sharepoint:修改域账号密码和本机密码的代码和范例 Virus
    批处理中的for循环 Virus
    NHibernate学习总结:(一)NHibernate的使用和配置 Virus
    关于.NET大数据量大并发量的数据连接池管理 Virus
    爬网日志中的警告信息:文件达到最大下载次数,The file reached the maximum download limit. Check that the full text of the document can be meani Virus
    在批处理中运行.sql文件 Virus
    规划dll的目录 Virus
  • 原文地址:https://www.cnblogs.com/hankuikui/p/12850598.html
Copyright © 2020-2023  润新知