如何在执行 spring 启动应用程序之前清除日志文件?

How to clear log file before executing spring boot app?

我一直在使用默认的 spring 日志记录配置,我只在 application.properties 文件中指定文件名。

logging.file.name=app.log

但是当我从命令行 "java -jar abc.jar"

启动应用程序时,默认情况下会附加日志

我每次都尝试搜索在启动应用程序之前清除文件的属性,但找不到。如何在启动应用程序之前清除日志文件?

Spring Boot 使用 Logback 框架作为默认的 Logger。 您可以通过 application.properties 文件使用环境变量来设置一些日志记录属性,但 logback xml 配置提供更强大的功能。

当类路径中的文件具有以下名称之一时,Spring Boot 将自动加载它以覆盖默认配置:

  • logback-spring.xml
  • logback.xml
  • logback-spring.groovy
  • logback.groovy

所以您可以将下面的代码片段放入 src/main/resources/logback-spring.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="Console"
              class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
            </Pattern>
        </layout>
    </appender>
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>app.log</file>
        <append>false</append>
        <encoder>
            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- LOG everything at INFO level -->
    <root level="info">
        <appender-ref ref="FILE" />
        <appender-ref ref="Console" />
    </root>
</configuration>

<append>false</append> 行完成了这项工作。 如果您想记录比编码器模式 <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern> 可用的信息更多的信息,请查看 logback 文档 https://logback.qos.ch/manual/layouts.html#logback-access