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 ,也就是向上传递日志

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面是一个简单的 Logback 输出文件的示例,在这个示例中,我们将日志输出到一个名为 "myapp.log" 的文件中。 1. 首先,您需要在项目中添加 Logback 的依赖项。如果您使用 Maven,可以在 pom.xml 文件中添加以下代码: ```xml <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> ``` 2. 创建一个名为 "logback.xml" 的文件,该文件应该位于您的类路径下。在这个文件中,您可以指定日志输出的格式以及输出的目标。以下是一个简单的 logback.xml 文件的示例: ```xml <configuration> <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>myapp.log</file> <encoder> <pattern>%date %-5level %logger{35} - %msg%n</pattern> </encoder> </appender> <root level="debug"> <appender-ref ref="FILE" /> </root> </configuration> ``` 在此示例中,我们定义了一个名为 "FILE" 的文件输出器,并指定了输出的目标文件名为 "myapp.log"。我们还指定了日志输出的格式,其中 "%date" 表示日期,"%-5level" 表示日志级别,"%logger{35}" 表示输出日志的 Logger 名称,"%msg" 表示日志消息,"%n" 表示换行符。 3. 在您的代码中,您需要使用 Logback API 来记录日志。以下是一个示例: ```java import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MyApp { private static final Logger logger = LoggerFactory.getLogger(MyApp.class); public static void main(String[] args) { logger.debug("Debug message"); logger.info("Info message"); logger.warn("Warn message"); logger.error("Error message"); } } ``` 在此示例中,我们使用 LoggerFactory 创建了一个 Logger 实例,并使用该实例记录了不同级别的日志消息。 4. 运行您的应用程序并查看输出文件 "myapp.log",您应该能够看到记录的日志消息。 希望这个示例能够帮助您了解如何将 Logback 日志输出文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荣华富贵8

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值