每天创建新的 Spring 日志文件

Pet*_*zov 4 spring spring-boot

我想配置 Spring 将日志消息写入文件:

logging.file=/my-logs/app.log
logging.path=/my-logs/spring.log
Run Code Online (Sandbox Code Playgroud)

是否可以每天轮换文件?我想每天创建一个新文件。

Mar*_*arc 6

来自文档

日志文件在达到 10 MB 时轮换,并且与控制台输出一样,默认情况下会记录错误级别、警告级别和信息级别消息。可以使用logging.file.max-size属性更改大小限制。除非设置了logging.file.max-history属性,否则先前轮换的文件将无限期存档。

另外,如果您只想记录到“/my-logs/app.log”,请删除logging.path并将logging.file更改为:

logging.file=/my-logs/app.log
Run Code Online (Sandbox Code Playgroud)

编辑:关于每天轮换日志,Spring默认logger不支持,可以使用Logback。在 src/main/resources 中创建一个名为 logback-spring.xml 的文件,其中包含以下内容:

<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{0}[%M:%L] - %msg%n</pattern>
    </encoder>
</appender>

<appender name="ROTATE_FILE_DAILY" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>/my-logs/app.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>app-%d{yyyy-MM-dd}.log</fileNamePattern>
    </rollingPolicy>
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{0}[%M:%L] - %msg%n</pattern>
    </encoder>
</appender>

<root level="INFO">
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="ROTATE_FILE_DAILY"/>
</root></configuration>
Run Code Online (Sandbox Code Playgroud)