“Springboot-日志配置”的版本间的差异

来自小能手俱乐部
跳到导航 跳到搜索
(创建页面,内容为“1231”)
 
 
(未显示同一用户的8个中间版本)
第1行: 第1行:
1231
==Spring Boot 日志记录==
Spring Boot为所有的内部日志记录使用Commons Logging***?***,但开放底层日志实现,提供了Java Util Logging、Log4J2和Logback的默认配置,每种情况下,日志记录其都被预先配置为使用控制台输出,可选的文件输出也是可用的。如果使用了默认的“Stater”,spring-boot-stater->spring-boot-stater-logging,Logback用于记录日志。
===日志格式===
Spring Boot 的默认日志(默认情况使用Logback)输出以下项目:
*日期和时间:毫秒精度,易于排序。
*日志级别:ERROR、WARN、INFO、DEBUG、TRACE(Logback中没有FATAL级别,它映射到ERROR)
*进程 ID。
*用于区分实际日志消息开始的分隔符。---
*线程名称:用方括号括起来(对于控制台输出,可能会截断)。
*记录器名称:这通常是源类名称(通常缩写)。
*日志消息。
可以使用 logging.pattern.console来定义
 
===控制台输出===
日志默认输出到控制台,级别为INFO
 
===文件输出===
启用文件输出,需要设置 <code>logging.file.name</code> or <code>logging.file.path</code>
 
<code>logging.file.name</code>: 日志写入特定的文件,可以是绝对路径也可以是相对路径
 
<code>logging.file.path</code>:日志写入特定目录的spring.log文件,可以是绝对路径也可以是相对路径
 
这两个参数不会同时生效,文件的级别要更高
 
logging.file.max-size:文件大小(默认单位为字节,可以使用KB、MB、GB),默认10M,超过之后就会分割并压缩存档
 
<code>logging.file.max-history</code>:最大保留天数,默认为7天,超过之后就会删除
 
<code>logging.file.total-size-cap</code>:日志存档总大小,超过后历史文件也会别删除
 
<code>logging.file.clean-history-on-start</code>: 应用程序启动时强制进行日志存档清理
 
===日志级别===
所有受支持的日志系统都可以在Spring环境中通过<code>ogging.level.<logger-name>=<level></code>设置日志级别,<code>logging.level.root</code>可以设置ROOT级别
 
<code>logging.level.root=warn</code>
 
<code>logging.level.org.springframework.web=debug</code>
 
<code>logging.level.org.hibernate=error</code>
 
也可以使用环境变量来设置,例如 <code>LOGGING_LEVEL_ORG_SPRINGFRAMEWORK_WEB=DEBUG</code>
 
===日志组===
我们经常会用到将相关的记录器分组到一起,以便可以同时配置它们。所以Spring Boot允许在 Spring 中定义日志记录组
 
<code>logging.group.tomcat=org.apache.catalina, org.apache.coyote, org.apache.tomcat</code>
 
<code>logging.level.tomcat=TRACE</code>
 
Spring Boot提供了一下的预定义组:
{| class="wikitable"
!web
!<code>org.springframework.core.codec</code>, <code>org.springframework.http</code>, <code>org.springframework.web</code>, <code>org.springframework.boot.actuate.endpoint.web</code>, <code>org.springframework.boot.web.servlet.ServletContextInitializerBeans</code>
|-
|sql
|<code>org.springframework.jdbc.core</code>, <code>org.hibernate.SQL</code>, <code>org.jooq.tools.LoggerListener</code>
|}
 
===自定义日志配置===
可以引入对应的jar包来激活适当的日志系统,也可以添加配置文件来对日志系统进行配置
 
根据日志系统,将加载对应的配置文件
{| class="wikitable"
!Logback
!<code>logback-spring.xml</code>, <code>logback-spring.groovy</code>, <code>logback.xml</code>, or <code>logback.groovy</code>
|-
|Log4j2
|<code>log4j2-spring.xml</code> or <code>log4j2.xml</code>
|-
|JDK (Java Util Logging)
|<code>logging.properties</code>
|}
建议使用带有 <code>-spring</code>变体的配置文件,如果使用标准的配置文件,Spring可能无法完全控制日志的初始化。也不建议使用JUL(已知的类加载问题)
 
默认的Logback配置文件在 org/springframework/boot/logging/logback/base.xml
 
我们也可以直接在配置文件引入默认的配置然后再覆盖默认配置
<div>
<blockquote>
<!-- logback-spring,xml --><br />
<?xml version="1.0" encoding="UTF-8" ?><br />
<!-- 扩展不能与配置扫描一起使用 --><br />
<!-- configuration scan="true" scanPeriod="10 seconds" --><br />
<configuration><br />
    <include resource="org/springframework/boot/logging/logback/base.xml" /><br />
<br />
    <root level="DEBUG"><br />
        <appender-ref ref="CONSOLE" /><br />
        <appender-ref ref="FILE" /><br />
    </root><br />
<br />
  <!-- 测试环境+开发环境. 多个使用逗号隔开. --> <br />
    <springProfile name="test,dev"><br />
        <logger name="org.springframework.web" level="INFO"><br />
            <appender-ref ref="FILE" /><br />
        </logger><br />
        <logger name="com.example" level="INFO" /><br />
    </springProfile><br />
<br />
  <!-- 生产环境. --> <br />
    <springProfile name="prod"><br />
        <logger name="org.springframework.web" level="ERROR"><br />
            <appender-ref ref="FILE" /><br />
        </logger><br />
        <logger name="com.example" level="ERROR" /><br />
    </springProfile><br />
<br />
</configuration><br />
</blockquote>
</div>
 
===Spring Boot对logback的扩展===
*特定于配置文件的配置
springProfile 标记,允许根据活动的Spring配置文件选择包括或者排除部分配置,使用<code>name</code> 属性指定配置文件,可以包含名称或表达式
<div>
<blockquote>
<springProfile name="staging"><br/>
    <!-- configuration to be enabled when the "staging" profile is active --><br/>
</springProfile><br/>
<springProfile name="dev | staging"><br/>
    <!-- configuration to be enabled when the "dev" or "staging" profiles are active --><br/>
</springProfile><br/>
<springProfile name="!production"><br/>
    <!-- configuration to be enabled when the "production" profile is not active --><br/>
</springProfile><br/>
</blockquote>
</div>
*环境属性
 
springProperty 标记,允许您公开 Spring 中的属性,供logback中使用。<code>source</code>指定要用的属性,<code>name</code>将此定义为占位符/变量,可以用<code>defaultValue</code>提供默认值
<blockquote>
<springProperty name="level" source="logger.a.level" defaultValue="INFO"/><br/>
    <root level="${level}"><br/>
        <appender-ref ref="CONSOLE" /><br/>
        <appender-ref ref="FILE" /><br/>
    </root><br/>
</blockquote>
 
===Log4J2===
Log4j2已经不仅仅是Log4j的一个升级版本了,它从头到尾都被重写了,并且参考了Logback,相对来讲功能更好,性能更强
* 引入依赖
<blockquote>
<dependency><br/>
    <groupId>org.springframework.boot</groupId>  <br/>
    <artifactId>spring-boot-starter-web</artifactId>  <br/>
    <exclusions><!-- 去掉springboot默认配置 -->  <br/>
        <exclusion>  <br/>
            <groupId>org.springframework.boot</groupId>  <br/>
            <artifactId>spring-boot-starter-logging</artifactId>  <br/>
        </exclusion>  <br/>
    </exclusions>  <br/>
</dependency> <br/>
<dependency> <!-- 引入log4j2依赖 -->  <br/>
    <groupId>org.springframework.boot</groupId>  <br/>
    <artifactId>spring-boot-starter-log4j2</artifactId>  <br/>
</dependency>
</blockquote>发现我们自定义的logback的配置已经失效了,当然配置文件中的logging的配置依然是有效的
 
默认的Log4J2的配置文件在 org/springframework/boot/logging/log4j2/log4j2.xml和org/springframework/boot/logging/log4j2/log4j2-file.xml
 
自定义配置<code>log4j2-spring.xml</code>
<blockquote>
<?xml version="1.0" encoding="UTF-8"?>
 
<!--设置log4j2的自身log级别为warn -->
 
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
 
<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置, 当设置成trace时,你会看到log4j2内部各种详细输出 -->
 
<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数 -->
 
<configuration status="INFO" monitorInterval="30">
 
    <!--先定义所有的appender -->
 
    <appenders>
 
        <!--这个输出控制台的配置 -->
 
        <console name="Console" target="SYSTEM_OUT">
 
            <!--输出日志的格式 -->
 
            <PatternLayout
 
                pattern="[%X{logId}] [%d{yyyy-MM-dd HH:mm:ss:SSS}] [%p] - %l - %m%n" />
 
        </console>
 
        <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用 -->
 
        <!--<File name="log" fileName="log/test.log" append="false"> <PatternLayout
 
            pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/> </File> -->
 
        <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size, 则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 -->
 
        <RollingFile name="RollingFileInfo"
 
            fileName="${sys:user.home}/logs/kayak-api.log"
 
            filePattern="${sys:user.home}/logs/kayak-api/$${date:yyyy-MM}/kayak-api-%d{yyyy-MM-dd}-%i.log">
 
            <Filters>
 
                <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
 
                <ThresholdFilter level="INFO" onMatch="ACCEPT"
 
                    onMismatch="DENY" />
 
                <ThresholdFilter level="WARN" onMatch="DENY"
 
                    onMismatch="NEUTRAL" />
 
            </Filters>
 
            <PatternLayout
 
                pattern="[%X{logId}] [%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" />
 
            <Policies>
 
                <TimeBasedTriggeringPolicy />
 
                <SizeBasedTriggeringPolicy size="100 MB" />
 
            </Policies>
 
        </RollingFile>
 
        <RollingFile name="RollingFileWarn"
 
            fileName="${sys:user.home}/logs/kayak-api-warn.log"
 
            filePattern="${sys:user.home}/logs/kayak-api/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
 
            <Filters>
 
                <ThresholdFilter level="WARN" onMatch="ACCEPT"
 
                    onMismatch="DENY" />
 
                <ThresholdFilter level="ERROR" onMatch="DENY"
 
                    onMismatch="NEUTRAL" />
 
            </Filters>
 
            <PatternLayout
 
                pattern="[%X{logId}] [%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" />
 
            <Policies>
 
                <TimeBasedTriggeringPolicy />
 
                <SizeBasedTriggeringPolicy size="100 MB" />
 
            </Policies>
 
            <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
 
            <DefaultRolloverStrategy max="20" />
 
        </RollingFile>
 
        <RollingFile name="RollingFileError"
 
            fileName="${sys:user.home}/logs/kayak-api-error.log"
 
            filePattern="${sys:user.home}/logs/kayak-api/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
 
            <ThresholdFilter level="ERROR" />
 
            <PatternLayout
 
                pattern="[%X{logId}] [%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" />
 
            <Policies>
 
                <TimeBasedTriggeringPolicy />
 
                <SizeBasedTriggeringPolicy size="100 MB" />
 
            </Policies>
 
        </RollingFile>
 
        <!-- 发送到 ELK -->
 
        <Gelf name="logstash-gelf" host="tcp:10.129.51.115" port="5044"
 
            version="1.1" ignoreExceptions="true" extractStackTrace="true"
 
            filterStackTrace="false">
 
            <!-- Field name="timestamp" pattern="%d{HH:mm:ss.SSS}" /> -->
 
            <Field name="level" pattern="%level" />
 
            <Field name="className" pattern="%C" />
 
            <Field name="method" pattern="%M" />
 
            <Field name="line" pattern="%L" />
 
            <Field name="server" pattern="%host" />
 
            <Field name="id" pattern="%X{logId}" />
 
        </Gelf>
 
    </appenders>
 
    <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效 -->
 
    <loggers>
 
        <!--过滤掉spring和hibernate的一些无用的debug信息 -->
 
        <logger name="org.springframework" level="INFO">
 
        </logger>
 
        <logger name="org.mybatis" level="INFO">
 
        </logger>
 
        <root level="INFO">
 
            <appender-ref ref="Console" />
 
            <!--<appender-ref ref="RollingFileInfo" />-->
 
            <!--<appender-ref ref="RollingFileWarn" />-->
 
            <!--<appender-ref ref="RollingFileError" />-->
 
            <appender-ref ref="logstash-gelf" />
 
        </root>
 
    </loggers>
 
</configuration>
</blockquote>
PatternLayout定义了输出日志时的格式: %d{HH:mm:ss.SSS} 表示输出到毫秒的时间 %t 输出当前线程名称 %-5level 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0 %logger 输出logger名称,因为Root Logger没有名称,所以没有输出 %msg 日志文本 %n 换行 其他常用的占位符有: %F 输出所在的类文件名,如Client.java %L 输出行号 %M 输出所在方法名 %l 输出语句所在的行数, 包括类名、方法名、文件名、行数
fileName 指定当前日志文件的位置和文件名称 filePattern 指定当发生Rolling时,文件的转移和重命名规则 SizeBasedTriggeringPolicy 指定当文件体积大于size指定的值时,触发Rolling DefaultRolloverStrategy 指定最多保存的文件个数 TimeBasedTriggeringPolicy 这个配置需要和filePattern结合使用,注意filePattern中配置的文件重命名规则是${FILE_NAME}-%d{yyyy-MM-dd HH-mm}-%i,最小的时间粒度是mm,即分钟,TimeBasedTriggeringPolicy指定的size是1,结合起来就是每1分钟生成一个新文件。如果改成%d{yyyy-MM-dd HH},最小粒度为小时,则每一个小时生成一个文件。

2021年8月27日 (五) 03:09的最新版本

Spring Boot 日志记录

Spring Boot为所有的内部日志记录使用Commons Logging***?***,但开放底层日志实现,提供了Java Util Logging、Log4J2和Logback的默认配置,每种情况下,日志记录其都被预先配置为使用控制台输出,可选的文件输出也是可用的。如果使用了默认的“Stater”,spring-boot-stater->spring-boot-stater-logging,Logback用于记录日志。

日志格式

Spring Boot 的默认日志(默认情况使用Logback)输出以下项目:

  • 日期和时间:毫秒精度,易于排序。
  • 日志级别:ERROR、WARN、INFO、DEBUG、TRACE(Logback中没有FATAL级别,它映射到ERROR)
  • 进程 ID。
  • 用于区分实际日志消息开始的分隔符。---
  • 线程名称:用方括号括起来(对于控制台输出,可能会截断)。
  • 记录器名称:这通常是源类名称(通常缩写)。
  • 日志消息。

可以使用 logging.pattern.console来定义

控制台输出

日志默认输出到控制台,级别为INFO

文件输出

启用文件输出,需要设置 logging.file.name or logging.file.path

logging.file.name: 日志写入特定的文件,可以是绝对路径也可以是相对路径

logging.file.path:日志写入特定目录的spring.log文件,可以是绝对路径也可以是相对路径

这两个参数不会同时生效,文件的级别要更高

logging.file.max-size:文件大小(默认单位为字节,可以使用KB、MB、GB),默认10M,超过之后就会分割并压缩存档

logging.file.max-history:最大保留天数,默认为7天,超过之后就会删除

logging.file.total-size-cap:日志存档总大小,超过后历史文件也会别删除

logging.file.clean-history-on-start: 应用程序启动时强制进行日志存档清理

日志级别

所有受支持的日志系统都可以在Spring环境中通过ogging.level.<logger-name>=<level>设置日志级别,logging.level.root可以设置ROOT级别

logging.level.root=warn

logging.level.org.springframework.web=debug

logging.level.org.hibernate=error

也可以使用环境变量来设置,例如 LOGGING_LEVEL_ORG_SPRINGFRAMEWORK_WEB=DEBUG

日志组

我们经常会用到将相关的记录器分组到一起,以便可以同时配置它们。所以Spring Boot允许在 Spring 中定义日志记录组

logging.group.tomcat=org.apache.catalina, org.apache.coyote, org.apache.tomcat

logging.level.tomcat=TRACE

Spring Boot提供了一下的预定义组:

web org.springframework.core.codec, org.springframework.http, org.springframework.web, org.springframework.boot.actuate.endpoint.web, org.springframework.boot.web.servlet.ServletContextInitializerBeans
sql org.springframework.jdbc.core, org.hibernate.SQL, org.jooq.tools.LoggerListener

自定义日志配置

可以引入对应的jar包来激活适当的日志系统,也可以添加配置文件来对日志系统进行配置

根据日志系统,将加载对应的配置文件

Logback logback-spring.xml, logback-spring.groovy, logback.xml, or logback.groovy
Log4j2 log4j2-spring.xml or log4j2.xml
JDK (Java Util Logging) logging.properties

建议使用带有 -spring变体的配置文件,如果使用标准的配置文件,Spring可能无法完全控制日志的初始化。也不建议使用JUL(已知的类加载问题)

默认的Logback配置文件在 org/springframework/boot/logging/logback/base.xml

我们也可以直接在配置文件引入默认的配置然后再覆盖默认配置


<?xml version="1.0" encoding="UTF-8" ?>


<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml" />

<root level="DEBUG">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>


<springProfile name="test,dev">
<logger name="org.springframework.web" level="INFO">
<appender-ref ref="FILE" />
</logger>
<logger name="com.example" level="INFO" />
</springProfile>


<springProfile name="prod">
<logger name="org.springframework.web" level="ERROR">
<appender-ref ref="FILE" />
</logger>
<logger name="com.example" level="ERROR" />
</springProfile>

</configuration>

Spring Boot对logback的扩展

  • 特定于配置文件的配置

springProfile 标记,允许根据活动的Spring配置文件选择包括或者排除部分配置,使用name 属性指定配置文件,可以包含名称或表达式

<springProfile name="staging">

</springProfile>
<springProfile name="dev | staging">

</springProfile>
<springProfile name="!production">

</springProfile>

  • 环境属性

springProperty 标记,允许您公开 Spring 中的属性,供logback中使用。source指定要用的属性,name将此定义为占位符/变量,可以用defaultValue提供默认值

<springProperty name="level" source="logger.a.level" defaultValue="INFO"/>
<root level="${level}">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>

Log4J2

Log4j2已经不仅仅是Log4j的一个升级版本了,它从头到尾都被重写了,并且参考了Logback,相对来讲功能更好,性能更强

  • 引入依赖

<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>

发现我们自定义的logback的配置已经失效了,当然配置文件中的logging的配置依然是有效的

默认的Log4J2的配置文件在 org/springframework/boot/logging/log4j2/log4j2.xml和org/springframework/boot/logging/log4j2/log4j2-file.xml

自定义配置log4j2-spring.xml

<?xml version="1.0" encoding="UTF-8"?>



<configuration status="INFO" monitorInterval="30">

   

    <appenders>

       

        <console name="Console" target="SYSTEM_OUT">

           

            <PatternLayout

                pattern="[%X{logId}] [%d{yyyy-MM-dd HH:mm:ss:SSS}] [%p] - %l - %m%n" />

        </console>

       

       

       

        <RollingFile name="RollingFileInfo"

            fileName="${sys:user.home}/logs/kayak-api.log"

            filePattern="${sys:user.home}/logs/kayak-api/$${date:yyyy-MM}/kayak-api-%d{yyyy-MM-dd}-%i.log">

            <Filters>

               

                <ThresholdFilter level="INFO" onMatch="ACCEPT"

                    onMismatch="DENY" />

                <ThresholdFilter level="WARN" onMatch="DENY"

                    onMismatch="NEUTRAL" />

            </Filters>

            <PatternLayout

                pattern="[%X{logId}] [%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" />

            <Policies>

                <TimeBasedTriggeringPolicy />

                <SizeBasedTriggeringPolicy size="100 MB" />

            </Policies>

        </RollingFile>

        <RollingFile name="RollingFileWarn"

            fileName="${sys:user.home}/logs/kayak-api-warn.log"

            filePattern="${sys:user.home}/logs/kayak-api/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">

            <Filters>

                <ThresholdFilter level="WARN" onMatch="ACCEPT"

                    onMismatch="DENY" />

                <ThresholdFilter level="ERROR" onMatch="DENY"

                    onMismatch="NEUTRAL" />

            </Filters>

            <PatternLayout

                pattern="[%X{logId}] [%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" />

            <Policies>

                <TimeBasedTriggeringPolicy />

                <SizeBasedTriggeringPolicy size="100 MB" />

            </Policies>

           

            <DefaultRolloverStrategy max="20" />

        </RollingFile>

        <RollingFile name="RollingFileError"

            fileName="${sys:user.home}/logs/kayak-api-error.log"

            filePattern="${sys:user.home}/logs/kayak-api/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">

            <ThresholdFilter level="ERROR" />

            <PatternLayout

                pattern="[%X{logId}] [%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" />

            <Policies>

                <TimeBasedTriggeringPolicy />

                <SizeBasedTriggeringPolicy size="100 MB" />

            </Policies>

        </RollingFile>

       

        <Gelf name="logstash-gelf" host="tcp:10.129.51.115" port="5044"

            version="1.1" ignoreExceptions="true" extractStackTrace="true"

            filterStackTrace="false">

           

            <Field name="level" pattern="%level" />

            <Field name="className" pattern="%C" />

            <Field name="method" pattern="%M" />

            <Field name="line" pattern="%L" />

            <Field name="server" pattern="%host" />

            <Field name="id" pattern="%X{logId}" />

        </Gelf>

    </appenders>

   

    <loggers>

       

        <logger name="org.springframework" level="INFO">

        </logger>

        <logger name="org.mybatis" level="INFO">

        </logger>

        <root level="INFO">

            <appender-ref ref="Console" />

           

           

           

            <appender-ref ref="logstash-gelf" />

        </root>

    </loggers>

</configuration>

PatternLayout定义了输出日志时的格式: %d{HH:mm:ss.SSS} 表示输出到毫秒的时间 %t 输出当前线程名称 %-5level 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0 %logger 输出logger名称,因为Root Logger没有名称,所以没有输出 %msg 日志文本 %n 换行 其他常用的占位符有: %F 输出所在的类文件名,如Client.java %L 输出行号 %M 输出所在方法名 %l 输出语句所在的行数, 包括类名、方法名、文件名、行数 fileName 指定当前日志文件的位置和文件名称 filePattern 指定当发生Rolling时,文件的转移和重命名规则 SizeBasedTriggeringPolicy 指定当文件体积大于size指定的值时,触发Rolling DefaultRolloverStrategy 指定最多保存的文件个数 TimeBasedTriggeringPolicy 这个配置需要和filePattern结合使用,注意filePattern中配置的文件重命名规则是${FILE_NAME}-%d{yyyy-MM-dd HH-mm}-%i,最小的时间粒度是mm,即分钟,TimeBasedTriggeringPolicy指定的size是1,结合起来就是每1分钟生成一个新文件。如果改成%d{yyyy-MM-dd HH},最小粒度为小时,则每一个小时生成一个文件。