• springboot 接入 logback.xml 彻底搞出一个超级完整加注释的版本-可在生产环境直接使用


    目录

    介绍 

    开搞 先logback.xml相关的

    pom.xml 

    application.yml 配置 

    启动配置

    类中编写 引入 @Slf4j

    logback.xml 重点介绍 

     logback项目名称

     最大保存时间 365天

    lOGGER  PATTERN 根据个人喜好选择匹配 

     控制台输出 

    滚动文件

        过滤器 可以选择自己要的日志级别 不选直接全部我靠 detail 最爱啊     

        文件输出目录  

        定期打包一天安排一个小可爱      

          这玩意就更牛掰了,直接异步输出爽翻天

    这玩意就是输出了,配置异步的时候,这东西直接配置进去完事搞定就很方便    

    logback.xml 文件配置 完整版

    效果


    我的相关博客

    java 日志 logback-spring.xml 文件配置_宇神城主_蒋浩宇的博客-CSDN博客

    spring boot log 日志配置_宇神城主_蒋浩宇的博客-CSDN博客_springboot log

    介绍 

    每天生成压缩文件记录数据

    保存一年

    异步写入数据

    linux直接就到目录位置,windwos 一般自动到d盘不用单独设置

     

     

    开搞 先logback.xml相关的

    pom.xml 

    1. <dependency>
    2. <groupId>org.springframework.boot</groupId>
    3. <artifactId>spring-boot-starter-web</artifactId>
    4. </dependency>
    5. <!-- test-->
    6. <dependency>
    7. <groupId>org.springframework.boot</groupId>
    8. <artifactId>spring-boot-starter-test</artifactId>
    9. <version>2.2.2.RELEASE</version>
    10. </dependency>
    11. <dependency>
    12. <groupId>org.projectlombok</groupId>
    13. <artifactId>lombok</artifactId>
    14. <version>1.18.24</version>
    15. <scope>compile</scope>
    16. </dependency>
    17. <dependency>
    18. <groupId>junit</groupId>
    19. <artifactId>junit</artifactId>
    20. <version>4.12</version>
    21. <scope>test</scope>
    22. </dependency>

    application.yml 配置 

    1. # 日志相关配置
    2. logging:
    3. config:
    4. classpath: logback-spring.xml
    5. level:
    6. root: debug
    7. org.jd.automaton.util.config: debug

    启动配置

    1. 这玩意启动的时候也可以安排 --logging.config.level=info 随便配置

    类中编写 引入 @Slf4j

    1. import lombok.extern.slf4j.Slf4j;
    2. import org.springframework.stereotype.Component;
    3. import javax.annotation.PostConstruct;
    4. @Component
    5. @Slf4j
    6. public class Init {
    7. /***
    8. *
    9. * 初始化方法
    10. */
    11. @PostConstruct
    12. public void run(){
    13. String info = "success";
    14. log.info("初始化执行 :{} ",info);
    15. }
    16. }

    logback.xml 重点介绍 


     logback项目名称

    1.     <property name="appName" value="super-app"/>


     最大保存时间 365天
     

    1.     <property name="maxHistory" value="365"/>


    lOGGER  PATTERN 根据个人喜好选择匹配
     

    1.   <property name="logPattern" value="%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0} %X{traceId} - %m%n"/>


     控制台输出 

    1.  ch.qos.logback.core.ConsoleAppender

    滚动文件

    1.  ch.qos.logback.core.rolling.RollingFileAppender 


        
    过滤器 可以选择自己要的日志级别 不选直接全部我靠 detail 最爱啊 
        

    1. <filter class="ch.qos.logback.classic.filter.LevelFilter">
    2.             <level>DEBUG</level>
    3.             <onMatch>ACCEPT</onMatch>
    4.             <onMismatch>DENY</onMismatch>
    5.         </filter>


        
    文件输出目录
      

    1.  <file>${logPath}/${appName}/${appName}_debug.log</file>


        
    定期打包一天安排一个小可爱
          

    1.  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    2.             <fileNamePattern>${logPath}/${appName}/debug/${appName}_debug.log.%d{yyyy-MM-dd}.zip
    3.             </fileNamePattern>
    4.             <maxHistory>${maxHistory}</maxHistory>
    5.         </rollingPolicy>


        
     
    这玩意就更牛掰了,直接异步输出爽翻天

    1.  ch.qos.logback.classic.AsyncAppender


    这玩意就是输出了,配置异步的时候,这东西直接配置进去完事搞定就很方便
        

    1. <appender-ref ref="STDOUT"/>


        

    logback.xml 文件配置 完整版

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <!-- 分级别异步文件日志输出配置 -->
    3. <!-- 级别从高到低 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL -->
    4. <!-- 日志输出规则 根据当前ROOT 级别,日志输出时,级别高于root默认的级别时 会输出 -->
    5. <!-- 以下 每个配置的 filter 是过滤掉输出文件里面,会出现高级别文件,依然出现低级别的日志信息,通过filter 过滤只记录本级别的日志 -->
    6. <!-- scan 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 -->
    7. <!-- scanPeriod 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
    8. <!-- debug 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
    9. <configuration scan="true" scanPeriod="60 seconds" debug="false">
    10. <!-- logback项目名称 -->
    11. <property name="appName" value="super-app"/>
    12. <!-- 日志级别 DEBUG INFO WARN ERROR -->
    13. <property name="logLevel" value="DEBUG"/>
    14. <!-- 日志路径-->
    15. <property name="logPath" value="/export/log"/>
    16. <!-- 最大保存时间 365天-->
    17. <property name="maxHistory" value="365"/>
    18. <!-- 异步缓冲队列的深度,该值会影响性能.默认值为256 -->
    19. <property name="queueSize" value="256"/>
    20. <!-- lOGGER PATTERN 根据个人喜好选择匹配 -->
    21. <property name="logPattern" value="%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0} %X{traceId} - %m%n"/>
    22. <!-- 动态日志级别 -->
    23. <jmxConfigurator/>
    24. <!-- 控制台的标准输出 -->
    25. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    26. <encoder>
    27. <charset>UTF-8</charset>
    28. <pattern>${logPattern}</pattern>
    29. </encoder>
    30. </appender>
    31. <appender name="consoleDetail" class="ch.qos.logback.core.rolling.RollingFileAppender">
    32. <file>${logPath}/${appName}/${appName}_detail.log</file>
    33. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    34. <fileNamePattern>${logPath}/${appName}/detail/${appName}_detail.log.%d{yyyy-MM-dd}.zip</fileNamePattern>
    35. <maxHistory>${maxHistory}</maxHistory>
    36. </rollingPolicy>
    37. <encoder>
    38. <pattern>${logPattern}</pattern>
    39. </encoder>
    40. </appender>
    41. <!-- DUBUG 日志记录 -->
    42. <appender name="FILE_DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
    43. <filter class="ch.qos.logback.classic.filter.LevelFilter">
    44. <level>DEBUG</level>
    45. <onMatch>ACCEPT</onMatch>
    46. <onMismatch>DENY</onMismatch>
    47. </filter>
    48. <file>${logPath}/${appName}/${appName}_debug.log</file>
    49. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    50. <fileNamePattern>${logPath}/${appName}/debug/${appName}_debug.log.%d{yyyy-MM-dd}.zip
    51. </fileNamePattern>
    52. <maxHistory>${maxHistory}</maxHistory>
    53. </rollingPolicy>
    54. <encoder>
    55. <pattern>${logPattern}</pattern>
    56. </encoder>
    57. </appender>
    58. <!-- INFO 级别的日志记录 -->
    59. <appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
    60. <filter class="ch.qos.logback.classic.filter.LevelFilter">
    61. <level>INFO</level>
    62. <onMatch>ACCEPT</onMatch>
    63. <onMismatch>DENY</onMismatch>
    64. </filter>
    65. <file>${logPath}/${appName}/${appName}_info.log</file>
    66. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    67. <fileNamePattern>${logPath}/${appName}/info/${appName}_info.log.%d{yyyy-MM-dd}.zip
    68. </fileNamePattern>
    69. <maxHistory>${maxHistory}</maxHistory>
    70. </rollingPolicy>
    71. <encoder>
    72. <pattern>${logPattern}</pattern>
    73. </encoder>
    74. </appender>
    75. <!-- WARN 级别的日志记录 -->
    76. <appender name="FILE_WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
    77. <filter class="ch.qos.logback.classic.filter.LevelFilter">
    78. <level>WARN</level>
    79. <onMatch>ACCEPT</onMatch>
    80. <onMismatch>DENY</onMismatch>
    81. </filter>
    82. <file>${logPath}/${appName}/${appName}_warn.log</file>
    83. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    84. <fileNamePattern>${logPath}/${appName}/warn/${appName}_warn.log.%d{yyyy-MM-dd}.zip
    85. </fileNamePattern>
    86. <maxHistory>${maxHistory}</maxHistory>
    87. </rollingPolicy>
    88. <encoder>
    89. <pattern>${logPattern}</pattern>
    90. </encoder>
    91. </appender>
    92. <!-- Error 级别的日志记录 -->
    93. <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
    94. <filter class="ch.qos.logback.classic.filter.LevelFilter">
    95. <level>ERROR</level>
    96. <onMatch>ACCEPT</onMatch>
    97. <onMismatch>DENY</onMismatch>
    98. </filter>
    99. <file>${logPath}/${appName}/${appName}_error.log</file>
    100. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    101. <fileNamePattern>${logPath}/${appName}/error/${appName}_error.log.%d{yyyy-MM-dd}.zip
    102. </fileNamePattern>
    103. <maxHistory>${maxHistory}</maxHistory>
    104. </rollingPolicy>
    105. <encoder>
    106. <pattern>${logPattern}</pattern>
    107. </encoder>
    108. </appender>
    109. <appender name="ASYNC_consoleDetail" class="ch.qos.logback.classic.AsyncAppender">
    110. <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
    111. <discardingThreshold>0</discardingThreshold>
    112. <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
    113. <queueSize>${queueSize}</queueSize>
    114. <appender-ref ref="consoleDetail"/>
    115. </appender>
    116. <!-- ASYNC_LOG_DEBUG -->
    117. <appender name="ASYNC_LOG_DEBUG" class="ch.qos.logback.classic.AsyncAppender">
    118. <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
    119. <discardingThreshold>0</discardingThreshold>
    120. <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
    121. <queueSize>${queueSize}</queueSize>
    122. <appender-ref ref="FILE_DEBUG"/>
    123. </appender>
    124. <!-- ASYNC_LOG_INFO -->
    125. <appender name="ASYNC_LOG_INFO" class="ch.qos.logback.classic.AsyncAppender">
    126. <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
    127. <discardingThreshold>0</discardingThreshold>
    128. <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
    129. <queueSize>${queueSize}</queueSize>
    130. <appender-ref ref="FILE_INFO"/>
    131. </appender>
    132. <!-- ASYNC_LOG_WARN -->
    133. <appender name="ASYNC_LOG_WARN" class="ch.qos.logback.classic.AsyncAppender">
    134. <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
    135. <discardingThreshold>0</discardingThreshold>
    136. <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
    137. <queueSize>${queueSize}</queueSize>
    138. <appender-ref ref="FILE_WARN"/>
    139. </appender>
    140. <!--ASYNC_LOG_ERROR -->
    141. <appender name="ASYNC_LOG_ERROR" class="ch.qos.logback.classic.AsyncAppender">
    142. <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
    143. <discardingThreshold>0</discardingThreshold>
    144. <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
    145. <queueSize>${queueSize}</queueSize>
    146. <appender-ref ref="FILE_ERROR"/>
    147. </appender>
    148. <!-- 日志的记录级别 -->
    149. <!-- 在定义后引用APPENDER -->
    150. <root level="${logLevel}">
    151. <!-- 控制台 -->
    152. <appender-ref ref="STDOUT"/>
    153. <appender-ref ref="ASYNC_consoleDetail"/>
    154. <!-- 具体的日志级别和文件的配置 -->
    155. <appender-ref ref="ASYNC_LOG_DEBUG"/>
    156. <appender-ref ref="ASYNC_LOG_INFO"/>
    157. <appender-ref ref="ASYNC_LOG_WARN"/>
    158. <appender-ref ref="ASYNC_LOG_ERROR"/>
    159. </root>
    160. </configuration>

    效果

    每天生成新的zip文件保存昨天日志

    每天新文件答应到当前内容中

    ok  先些喽 持续更新 有兴趣溜赞搞起来 

    转发著名出处哟 持续更新好看最新内容  

  • 相关阅读:
    kafka伪集群部署,使用KRAFT模式
    我测试用的mark down教程
    Power Apps-库组件样式调整
    点云深度学习——pyqt调用配准网络DCP模型
    智能制造行业的工控安全解决方案
    HTML(超文本标记语言)
    速看!!带你揭秘3D建模行业内幕!!
    瑞吉外卖实战项目全攻略——优化篇第二天
    CSS - 显示模式
    虚拟摄像头之一: android8.1 移植 v4l2loopback 虚拟摄像头
  • 原文地址:https://blog.csdn.net/weixin_42749765/article/details/128012262