zoukankan      html  css  js  c++  java
  • Logback 输出 JPA SQL日志 到文件

    Logback 输出 JPA SQL日志 到文件

    使用Spring Boot 配置 JPA 时可以指定如下配置在控制台查看执行的SQL语句

    spring.jpa.show-sql=true

    Spring Boot 默认的日志配置不会输出到文件,若要打印日志到文件,可以使用如下配置:

    llogging.level后跟要打印日志的包名或类的全限定名,设置打印级别

    日志级别:TRACE < DEBUG < INFO < WARN < ERROR < FATAL

    logging.level.com.example=INFO

    配置日志文件的名称,可以使用绝对路径和相对路径

    logging.file=test.log

    设置日志目录,默认在目录下生成 spring.log

    logging.path=

    其他如格式等配置请查官方文档

    一般在生产上,需要将项目日志进行分类,错误日志单独打印,业务日志等。

    在使用 JPA 的时候,spring.jpa.show-sql=true可以在控制台看到SQL语句,但是无法打印到日志,试了很多种方法都没用生效,后来在stackoverflow发现以下配置可行:
    输出Hibernate SQL 到日志

    <!--输出到控制台-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    
    <!--输出到文件-->
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logback.%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    
    <appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>error.%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    
    
       <!-- 1. 输出SQL 到控制台和文件-->
     <logger name="org.hibernate.SQL" additivity="false" >
        <level value="DEBUG" />
        <appender-ref ref="file" />
        <appender-ref ref="console" />
    </logger>
    
       <!-- 2. 输出SQL 的参数到控制台和文件-->
    <logger name="org.hibernate.type.descriptor.sql.BasicBinder" additivity="false" level="TRACE" >
        <level value="TRACE" />
        <appender-ref ref="file" />
        <appender-ref ref="console" />
    </logger>
    
    <!--<logger name="org.hibernate.type" additivity="false" >-->
        <!--<level value="TRACE" />-->
        <!--<appender-ref ref="file" />-->
        <!--<appender-ref ref="console" />-->
    <!--</logger>-->
    
    <root level="info">
        <appender-ref ref="console" />
        <appender-ref ref="file" />
    </root>
    

    推荐使用 方案1,2一起打印SQL和参数,相关日志会少点。

    logback 中 logger 标签参数作用:name:指定打印日志的包或类,additivity: 是否向上传递日志,level 打印日志级别,appender-ref :使用哪种打印机制

    说明一下 additivity属性,logback 日志打印有一个根节点也就是上面的 标签,一般情况下不指定additivity的情况为true ,也就是向上传递日志

    作者:带着天使反上帝
    来源:CSDN
    原文:https://blog.csdn.net/sinat_25295611/article/details/81073011
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    php开启伪静态(2转)
    php,apache伪静态(1转)
    sql 字段先计算后再拿比对的字段进行比对 效率提升100倍
    使用 PHP 读取文本(TXT)文件 并分页显示
    php给一张图片加上水印效果
    PHP命名空间(Namespace)的使用详解(转)
    php随机获取金山词霸每日一句
    网络报文分析利器eBPF
    这个世界变得有多复杂
    个人收藏网站推荐(一)
  • 原文地址:https://www.cnblogs.com/ITbbs/p/10126075.html
Copyright © 2011-2022 走看看