Spring Boot配置多个日志文件记录不同类日志示例

了解如何使用多个文件追加器Spring 引导应用程序中创建多个日志文件。了解如何使用翻转策略、归档等配置所有文件追加器,wiihlog4j2日志配置。

1. 带登录的多个日志文件

以下文件包含 5 个记录器。我们可以根据需要创建更多的记录器。logback.xml

  • console– 将输出记录到控制台。包括所有日志语句。
  • applicationLog– 将输出记录到。包括包的应用程序日志。application.logdebugcom.howtodoinjava.demo
  • aopLog– 将输出记录到。在包中包含应用程序日志。application-aop.loginfocom.howtodoinjava.demo.aop
  • springLog– Createand 包含 spring 框架生成的所有错误日志。spring-framework.log
  • hibernateLog– 创建并包含休眠生成的所有错误日志。database.log

放置给定资源文件夹。logback.xml

<configuration>
 
  <property name="LOG_PATTERN" value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} %p %m%n" />
  <property name="APP_LOG_ROOT" value="c:/temp"/>
   
  <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
      <encoder>
          <pattern>${LOG_PATTERN}</pattern>
      </encoder>
    </appender>
 
  <appender name="applicationLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${APP_LOG_ROOT}/application.log</file>
    <encoder>
      <pattern>${LOG_PATTERN}</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
          <fileNamePattern>${APP_LOG_ROOT}/application-%i.log</fileNamePattern>
          <minIndex>1</minIndex>
          <maxIndex>10</maxIndex>
      </rollingPolicy>
      <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
          <maxFileSize>10MB</maxFileSize>
      </triggeringPolicy>
  </appender>
   
  <appender name="aopLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${APP_LOG_ROOT}/application-aop.log</file>
    <encoder>
      <pattern>${LOG_PATTERN}</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
          <fileNamePattern>${APP_LOG_ROOT}/application-aop-%i.log</fileNamePattern>
          <minIndex>1</minIndex>
          <maxIndex>10</maxIndex>
      </rollingPolicy>
      <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
          <maxFileSize>10MB</maxFileSize>
      </triggeringPolicy>
  </appender
   
  <appender name="springLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${APP_LOG_ROOT}/spring-framework.log</file>
    <encoder>
      <pattern>${LOG_PATTERN}</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
          <fileNamePattern>${APP_LOG_ROOT}/spring-framework-%i.log</fileNamePattern>
          <minIndex>1</minIndex>
          <maxIndex>10</maxIndex>
      </rollingPolicy>
      <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
          <maxFileSize>10MB</maxFileSize>
      </triggeringPolicy>
  </appender
   
  <appender name="hibernateLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${APP_LOG_ROOT}/database.log</file>
    <encoder>
      <pattern>${LOG_PATTERN}</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
          <fileNamePattern>${APP_LOG_ROOT}/database-%i.log</fileNamePattern>
          <minIndex>1</minIndex>
          <maxIndex>10</maxIndex>
      </rollingPolicy>
      <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
          <maxFileSize>10MB</maxFileSize>
      </triggeringPolicy>
  </appender
   
  <logger name="com.howtodoinjava.demo" level="DEBUG">
    <appender-ref ref="applicationLog" />
    <appender-ref ref="console" />
  </logger>
   
  <logger name="com.howtodoinjava.demo.aop" level="INFO">
    <appender-ref ref="aopLog" />
    <appender-ref ref="console" />
  </logger>
   
  <logger name="org.springframework" level="DEBUG">
    <appender-ref ref="springLog" />
    <appender-ref ref="console" />
  </logger>
   
  <logger name="org.hibernate" level="DEBUG">
    <appender-ref ref="hibernateLog" />
    <appender-ref ref="console" />
  </logger>
 
   <root level="info">
      <appender-ref ref="console" />
   </root>
    
</configuration>

2. 带有 log4j2 的多个日志文件

要使用 log4j2 实现上述日志记录配置,请在类路径中包含 log4j2 依赖项。

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
  <exclusions>
    <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

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
  
    <Properties>
        <Property name="LOG_PATTERN">%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} %p %m%n</Property>
        <Property name="APP_LOG_ROOT">c:/temp</Property>
    </Properties>
  
    <Appenders>
  
        <Console name="console" target="SYSTEM_OUT" follow="true">
            <PatternLayout pattern="${LOG_PATTERN}"/>
        </Console>
          
        <RollingFile name="applicationLog" fileName="${sys:APP_LOG_ROOT}/application.log"
            filePattern="${sys:APP_LOG_ROOT}/application-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="19500KB" />
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
          
        <RollingFile name="springLog" fileName="${sys:APP_LOG_ROOT}/spring-framework.log"
            filePattern="${sys:APP_LOG_ROOT}/spring-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="19500KB" />
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
          
        <RollingFile name="aopLog" fileName="${sys:APP_LOG_ROOT}/application-aop.log"
            filePattern="${sys:APP_LOG_ROOT}/application-aop-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="19500KB" />
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
         
        <RollingFile name="hibernateLog" fileName="${sys:APP_LOG_ROOT}/database.log"
            filePattern="${sys:APP_LOG_ROOT}/spring-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="19500KB" />
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
          
    </Appenders>
  
    <Loggers>
      
      <Logger name="com.howtodoinjava.demo" additivity="false" level="debug">
            <AppenderRef ref="applicationLog" />
            <AppenderRef ref="console"  />
        </Logger>
         
        <Logger name="com.howtodoinjava.demo.aop" additivity="false" level="info">
            <AppenderRef ref="aopLog" />
            <AppenderRef ref="console" />
        </Logger>
          
        <Logger name="org.springframework" additivity="false" level="error">
            <AppenderRef ref="springLog" />
            <AppenderRef ref="console"/>
        </Logger>
         
        <Logger name="org.hibernate" additivity="false" level="error">
            <AppenderRef ref="hibernateLog" />
            <AppenderRef ref="console"/>
        </Logger>
                  
        <Root level="INFO">
            <AppenderRef ref="console"/>
        </Root>
  
    </Loggers>
  
</Configuration>

3. 弹簧启动多个日志文件演示

使用上述任何给定配置运行应用程序。您将看到文件夹中生成的日志文件。'c:/temp'

Spring 引导多个日志文件示例

请向我提出与使用多个文件追加器配置 Spring 引导日志记录相关的问题。

快乐学习!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 Spring 的定时任务功能以及 Java文件监控功能来实现监控多个文件夹下是否有新增文件的功能。 具体实现步骤如下: 1. 首先,使用 Spring 的定时任务功能,创建一个定时任务,定时执行文件监控任务。 2. 在任务中,使用 Java文件监控功能,监控多个文件夹下是否有新增文件。可以使用 Java 的 NIO 去实现文件监控。通过遍历多个文件夹,获取文件夹下的所有文件,并对这些文件进行监控。 3. 当有新增文件时,可以采取不同的处理方式,例如将新增文件的信息记录日志中、发送通知邮件等。 下面是一个简单的示例代码: ```java @Component public class FileMonitorTask { @Scheduled(fixedRate = 1000) // 每隔1秒执行一次任务 public void monitor() throws IOException { String[] folders = {"/path/to/folder1", "/path/to/folder2"}; // 监控多个文件夹 WatchService watchService = FileSystems.getDefault().newWatchService(); for (String folder : folders) { Path path = Paths.get(folder); path.register(watchService, StandardWatchEventKinds.ENTRY_CREATE); } while (true) { WatchKey watchKey = null; try { watchKey = watchService.take(); } catch (InterruptedException e) { e.printStackTrace(); } for (WatchEvent<?> event : watchKey.pollEvents()) { if (event.kind() == StandardWatchEventKinds.ENTRY_CREATE) { Path filePath = ((WatchEvent<Path>) event).context(); System.out.println("New file detected: " + filePath.toString()); } } watchKey.reset(); } } } ``` 在上述代码中,我们创建了一个 `FileMonitorTask` 定时任务,每隔1秒执行一次。该任务中使用 Java文件监控功能监控了两个文件夹,当有新增文件时,在控制台输出新增文件的信息。你可以根据实际需求进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值