如何在Spring Boot的application.yml中配置滚动文件appender

ele*_*ele 32 logging spring yaml spring-boot

是否可以在Spring Boot应用程序的application.yml中配置每日文件追加器?

即filenamePattern:myfile.%d {yyyy-MM-dd-HH-mm-ss} .log

我在application.yml文件中有如下配置.

logging:

   file: /mypath/myfile.log

   level:
     mypackage: INFO
Run Code Online (Sandbox Code Playgroud)

谢谢

Don*_*ler 32

默认的文件附加器是基于大小(10MB).

在你logback.xml刚配置TimeBasedRollingPolicy的描述在这里

就像这样:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <include resource="org/springframework/boot/logging/logback/base.xml"/>

  <appender name="ROLLIN" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_FILE}</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

        <!-- daily rollover -->
        <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.log</fileNamePattern>

    </rollingPolicy>
  </appender>

  <root level="INFO">
    <appender-ref ref="ROLLIN" />
  </root>

  <logger name="org.springframework.web" level="INFO"/>
</configuration>
Run Code Online (Sandbox Code Playgroud)

  • 感谢Donovan,我想知道我是否可以避免使用dropw.xml中的logback.xml,我可以在config.yml中定义它.即在日志记录下,我可以定义类型为的appender:file,currentLogFilename:/mathath/myfile.log,archiveLogFilenamePattern:/mathath/myfile-d%(yyyy-MM -dd}.log.gz,archiveFileCount:3,timeZone:UTC.在Spring Boot中,目前似乎无法做到这一点. (4认同)
  • 面对同样的问题,所以@ele是否意味着在Spring Boot中配置appender类型是不可能的? (3认同)
  • @Amnon Logback 是 Spring Boot 中的默认日志记录实现,并且在`application.yml` 中没有通用的方法来配置它,所以你必须在特定于实现的配置文件中配置它。 (2认同)

小智 7

要覆盖默认文件附加器并将其更改为每日滚动,可以使用如下所示的logback-spring.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>

    <appender name="ROLLING-FILE"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <file>${LOG_FILE}</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover -->
            <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
    </appender>

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

</configuration>
Run Code Online (Sandbox Code Playgroud)

  • OP询问application.yml而不是logback.xml (2认同)

Sha*_*rup 7

logging.file.name=MyApp.log
logging.pattern.rolling-file-name=MyApp-%d{yyyy-MM-dd-HH-mm-ss}.%i.log
Run Code Online (Sandbox Code Playgroud)

使用 Spring Boot2.3.42.2.10
Not使用 Spring Boot2.1.17

  • **已弃用。**请参阅:[logging.logback.rollingpolicy.file-name-pattern](https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features。 logging.custom-log-configuration) 滚动日志文件名的模式(默认 `${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz`) (3认同)
  • 这工作得很好,如果你想要每日日志使用logging.pattern.rolling-file-name=MyApp-%d{yyyy-MM-dd}.%i.log,如果你想要每小时日志logging.pattern.rolling -文件名=MyApp-%d{yyyy-MM-dd-HH}.%i.log (2认同)