在 spring-boot 应用程序中过滤日志

Filter logs in spring-boot application

在我的 spring-boot 应用程序的 application.yml 中,我有以下代码:

logging:
  file: test.log
  pattern:
    file: "%d %-5level [%thread] %logger : %msg%n"

我会这样写

 logging:
   level:
    org: hibernate: *

如果只来自 "test.log" 中的一个特定包 (org.hibernate),我会过滤并收集所有级别的所有日志消息(ERROR、DEBUG、INFO 等)。有可能吗?

是的,您可以为每个 your/third 库包定义日志级别:

application.yml 示例:

# Fine-tuning a specific logger (for a single class)
 logging:
   level:
     yourpackage: INFO
     org:
        hibernate: ALL
        springframework: INFO

application.properties 示例:

# Fine-tuning a specific logger (for a single class)
logging.level.yourpackage.controllers.HomeController = INFO

# Specify the level for spring boot and hibernate's loggers
logging.level.org.springframework = INFO
logging.level.org.hibernate = ALL

更新 1:仅将 hibernate.* 记录到日志文件

如果您只想将一个特定的 Java 包记录到您的日志文件中,请将 logback.xml 添加到您的 src/main/resources 文件夹并添加以下设置:

<configuration>

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>hibernateLogs.log</file>

    <encoder>
      <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
    </encoder>
  </appender>

  <logger name="org.hibernate" level="ALL">
      <appender-ref ref="FILE" />
  </logger>

</configuration>

此配置会将您所有的休眠日志记录到一个文件中。