• 在springboot应用程序中按大小或日期滚动日志文件


    1. 本文的目的

    我将演示如何在 springboot 应用程序中按日期或大小滚动日志文件。

    2. 环境

    • 弹簧靴 1.x 和 2.x

    3. 在 springboot 应用程序中滚动日志文件

    3.1 春季的默认日志记录配置是什么?

    默认情况下,springboot 使用logback作为默认记录器,但是如果您仅使用application.properties来配置日志记录,则存在一些限制:

    1. logging.level.=ERROR # this is the root logging level for all packages.
    2. logging.level.com.test.sb1jt=DEBUG # this is the project-specific package logging level configuration
    3. logging.file=springboot-logger.log # this is the logging target file

    您可以看到,我们可以配置根日志记录级别和包日志记录级别,但是如果要按日期或大小滚动日志文件,该怎么办?

    3.2 将登录配置文件添加到项目中

    当 springboot 类路径中的文件具有以下名称之一时,Spring 引导将自动通过默认配置加载它:

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

    建议使用倒数弹簧.xml。

    3.3 按大小演示滚动日志文件

    我们可以在 src/main/res/logback-spring 中定义滚动策略.xml如下所示:

    1. "1.0" encoding="UTF-8"?>
    2. <configuration>
    3. <property name="LOGS" value="./logs" />
    4. <appender name="Console"
    5. class="ch.qos.logback.core.ConsoleAppender">
    6. <layout class="ch.qos.logback.classic.PatternLayout">
    7. <Pattern>
    8. %black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
    9. Pattern>
    10. layout>
    11. appender>
    12. <appender name="RollingFileBySize" class="ch.qos.logback.core.rolling.RollingFileAppender">
    13. <file>${LOGS}/spring-boot-loggerbysize.logfile>
    14. <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    15. <fileNamePattern>${LOGS}/spring-boot-loggerbysize-%d{yyyy-MM-dd}.%i.logfileNamePattern>
    16. <maxFileSize>1MBmaxFileSize>
    17. <maxHistory>6maxHistory>
    18. <totalSizeCap>3MBtotalSizeCap>
    19. rollingPolicy>
    20. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
    21. <Pattern>%d %p %C{1.} [%t] %m%nPattern>
    22. encoder>
    23. appender>
    24. <root level="error">
    25. <appender-ref ref="RollingFileByDate" />
    26. <appender-ref ref="Console" />
    27. root>
    28. <logger name="com.test" level="trace" additivity="false">
    29. <appender-ref ref="RollingFileByDate" />
    30. <appender-ref ref="Console" />
    31. logger>
    32. configuration>

    然后,您可以通过运行打印大量日志的无限循环来进行测试。然后你会得到这些文件:

    1. -rw-r--r-- 1 zzz staff 1.0M May 25 18:21 spring-boot-loggerbysize-2019-05-25.0.log
    2. -rw-r--r-- 1 zzz staff 1.0M May 25 18:21 spring-boot-loggerbysize-2019-05-25.1.log
    3. -rw-r--r-- 1 zzz staff 317K May 25 18:22 spring-boot-loggerbysize.log

    3.4 按日期演示滚动日志文件

    我们可以在 src/main/res/logback-spring 中定义日期滚动策略.xml如下所示:

    1. "1.0" encoding="UTF-8"?>
    2. <configuration>
    3. <property name="LOGS" value="./logs" />
    4. <appender name="Console"
    5. class="ch.qos.logback.core.ConsoleAppender">
    6. <layout class="ch.qos.logback.classic.PatternLayout">
    7. <Pattern>
    8. %black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
    9. Pattern>
    10. layout>
    11. appender>
    12. <appender name="RollingFileByDate"
    13. class="ch.qos.logback.core.rolling.RollingFileAppender">
    14. <file>${LOGS}/spring-boot-loggerbyate.logfile>
    15. <encoder
    16. class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
    17. <Pattern>%d %p %C{1.} [%t] %m%nPattern>
    18. encoder>
    19. <rollingPolicy
    20. class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    21. <fileNamePattern>${LOGS}/spring-boot-loggerbydate-%d{yyyy-MM-dd}.%i.log
    22. fileNamePattern>
    23. <timeBasedFileNamingAndTriggeringPolicy
    24. class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
    25. <maxFileSize>1MBmaxFileSize>
    26. timeBasedFileNamingAndTriggeringPolicy>
    27. rollingPolicy>
    28. appender>
    29. <root level="error">
    30. <appender-ref ref="RollingFileByDate" />
    31. <appender-ref ref="Console" />
    32. root>
    33. <logger name="com.test" level="trace" additivity="false">
    34. <appender-ref ref="RollingFileByDate" />
    35. <appender-ref ref="Console" />
    36. logger>
    37. configuration>

    Then you can test by running a infinite loop which print a lot of logs. Then you would get these files:

    1. -rw-r--r-- 1 zzz staff 393K May 25 18:34 spring-boot-loggerbyate.log
    2. -rw-r--r-- 1 zzz staff 1.0M May 25 18:31 spring-boot-loggerbydate-2019-05-25.0.log
    3. -rw-r--r-- 1 zzz staff 1.0M May 25 18:31 spring-boot-loggerbydate-2019-05-25.1.log
    4. -rw-r--r-- 1 zzz staff 1.0M May 25 18:31 spring-boot-loggerbydate-2019-05-25.2.log
    5. -rw-r--r-- 1 zzz staff 1.0M May 25 18:32 spring-boot-loggerbydate-2019-05-25.3.log
    6. -rw-r--r-- 1 zzz staff 1.0M May 25 18:32 spring-boot-loggerbydate-2019-05-25.4.log
    7. -rw-r--r-- 1 zzz staff 1.0M May 25 18:32 spring-boot-loggerbydate-2019-05-25.5.log
    8. -rw-r--r-- 1 zzz staff 1.0M May 25 18:33 spring-boot-loggerbydate-2019-05-25.6.log
    9. -rw-r--r-- 1 zzz staff 1.0M May 25 18:33 spring-boot-loggerbydate-2019-05-25.7.log
    10. -rw-r--r-- 1 zzz staff 1.0M May 25 18:33 spring-boot-loggerbydate-2019-05-25.8.log
    11. -rw-r--r-- 1 zzz staff 1.0M May 25 18:34 spring-boot-loggerbydate-2019-05-25.9.log

    4. 结论

    可以通过阅读日志日志记录追加程序配置来获取有关回日志追加程序的详细信息。

  • 相关阅读:
    计算机网络
    一个完全解耦的时间片轮询框架构
    如何分析识别文章/内容中高频词和关键词?
    升级Seata Server 1.5.2
    MySQL事务MVCC详解
    SQL Server如何获取GUID号
    GBase 8c查看数据
    python开发之个微群聊机器人的开发
    南京邮电大学汇编语言程序设计实验二
    深入实现 MyBatis 底层机制的实现任务阶段 7- 实现动态代理 Mapper 的方法
  • 原文地址:https://blog.csdn.net/allway2/article/details/127979033