• logback实践


    1:日志区分环境

    2:debug info  warn error日志文件不一样

    3: 文件滚动日志 

    4:启动可带参数  --spring.profiles.active=dev --log.level=info

    5:可从配置文件中获取上下文参数

    logback-spring.xml  放在 classpath 下面
     

    1. <configuration scan="false" scanPeriod="30 seconds" debug="true">
    2. <springProperty scope="context" name="LOG_ROOT" source="log.path" defaultValue="/usr/log"/>
    3. <springProperty scope="context" name="APP_NAME" source="spring.application.name" defaultValue="default"/>
    4. <springProperty scope="context" name="LOG_LEVEL" source="log.level" defaultValue="INFO"/>
    5. <!-- 设置日志格式 -->
    6. <property name="LOG_PATTERN" value="[%date{ISO8601}] [%-5level] [%thread] [%X{ltid}] [%logger{0}.%M-%L] - %msg%n"/>
    7. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    8. <target>System.out</target>
    9. <encoder>
    10. <pattern>${LOG_PATTERN}</pattern>
    11. <charset>UTF-8</charset>
    12. </encoder>
    13. </appender>
    14. <appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
    15. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
    16. <pattern>${LOG_PATTERN}</pattern>
    17. <charset>UTF-8</charset>
    18. </encoder>
    19. <file>${LOG_ROOT}/${APP_NAME}/debug.log</file>
    20. <!-- 滚动日志策略: SizeAndTimeBasedRollingPolicy 根据文件大小和时间进行分割归档-->
    21. <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    22. <!-- 指定滚动文件名称的生成规则 -->
    23. <fileNamePattern>${LOG_ROOT}/${APP_NAME}/debug.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
    24. <!-- 超过最大磁盘限制后是否删除归档文件 -->
    25. <cleanHistoryOnStart>true</cleanHistoryOnStart>
    26. <!-- 单个日志文件大小 -->
    27. <maxFileSize>20MB</maxFileSize>
    28. <!-- <maxFileSize>1KB</maxFileSize>-->
    29. <!-- 归档文件占用磁盘总大小,超过后会根据cleanHistoryOnStart实行,决定是否删除 -->
    30. <totalSizeCap>1GB</totalSizeCap>
    31. <!-- <totalSizeCap>10KB</totalSizeCap>-->
    32. <!-- 保留的历史归档日志文件天数-->
    33. <maxHistory>30</maxHistory>
    34. </rollingPolicy>
    35. <filter class="ch.qos.logback.classic.filter.LevelFilter">
    36. <level>DEBUG</level>
    37. <onMatch>ACCEPT</onMatch>
    38. <onMismatch>DENY</onMismatch>
    39. </filter>
    40. </appender>
    41. <appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender">
    42. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
    43. <pattern>[%date{ISO8601}] [%-5level] [%thread] [%X{ltid}] [%logger-%L] - %msg%n</pattern>
    44. <charset>UTF-8</charset>
    45. </encoder>
    46. <file>${LOG_ROOT}/${APP_NAME}/info.log</file>
    47. <!-- 滚动日志策略: SizeAndTimeBasedRollingPolicy 根据文件大小和时间进行分割归档-->
    48. <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    49. <!-- 指定滚动文件名称的生成规则 -->
    50. <fileNamePattern>${LOG_ROOT}/${APP_NAME}/info.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
    51. <!-- 超过最大磁盘限制后是否删除归档文件 -->
    52. <cleanHistoryOnStart>true</cleanHistoryOnStart>
    53. <!-- 单个日志文件大小 -->
    54. <maxFileSize>20MB</maxFileSize>
    55. <!-- <maxFileSize>1KB</maxFileSize>-->
    56. <!-- 归档文件占用磁盘总大小,超过后会根据cleanHistoryOnStart实行,决定是否删除 -->
    57. <totalSizeCap>1GB</totalSizeCap>
    58. <!-- <totalSizeCap>10KB</totalSizeCap>-->
    59. <!-- 保留的历史归档日志文件天数-->
    60. <maxHistory>30</maxHistory>
    61. </rollingPolicy>
    62. <filter class="ch.qos.logback.classic.filter.LevelFilter">
    63. <level>INFO</level>
    64. <onMatch>ACCEPT</onMatch>
    65. <onMismatch>DENY</onMismatch>
    66. </filter>
    67. </appender>
    68. <appender name="warn" class="ch.qos.logback.core.rolling.RollingFileAppender">
    69. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
    70. <pattern>[%date{ISO8601}] [%-5level] [%thread] [%X{ltid}] [%logger-%L] - %msg%n</pattern>
    71. <charset>UTF-8</charset>
    72. </encoder>
    73. <file>${LOG_ROOT}/${APP_NAME}/warn.log</file>
    74. <!-- 滚动日志策略: SizeAndTimeBasedRollingPolicy 根据文件大小和时间进行分割归档-->
    75. <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    76. <!-- 指定滚动文件名称的生成规则 -->
    77. <fileNamePattern>${LOG_ROOT}/${APP_NAME}/warn.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
    78. <!-- 超过最大磁盘限制后是否删除归档文件 -->
    79. <cleanHistoryOnStart>true</cleanHistoryOnStart>
    80. <!-- 单个日志文件大小 -->
    81. <maxFileSize>20MB</maxFileSize>
    82. <!-- <maxFileSize>1KB</maxFileSize>-->
    83. <!-- 归档文件占用磁盘总大小,超过后会根据cleanHistoryOnStart实行,决定是否删除 -->
    84. <totalSizeCap>1GB</totalSizeCap>
    85. <!-- <totalSizeCap>10KB</totalSizeCap>-->
    86. <!-- 保留的历史归档日志文件天数-->
    87. <maxHistory>30</maxHistory>
    88. </rollingPolicy>
    89. <filter class="ch.qos.logback.classic.filter.LevelFilter">
    90. <level>WARN</level>
    91. <onMatch>ACCEPT</onMatch>
    92. <onMismatch>DENY</onMismatch>
    93. </filter>
    94. </appender>
    95. <appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
    96. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
    97. <pattern>${LOG_PATTERN}</pattern>
    98. <charset>UTF-8</charset>
    99. </encoder>
    100. <file>${LOG_ROOT}/${APP_NAME}/error.log</file>
    101. <!-- 滚动日志策略: SizeAndTimeBasedRollingPolicy 根据文件大小和时间进行分割归档-->
    102. <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    103. <!-- 指定滚动文件名称的生成规则 -->
    104. <fileNamePattern>${LOG_ROOT}/${APP_NAME}/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
    105. <!-- 超过最大磁盘限制后是否删除归档文件 -->
    106. <cleanHistoryOnStart>true</cleanHistoryOnStart>
    107. <!-- 单个日志文件大小 -->
    108. <maxFileSize>20MB</maxFileSize>
    109. <!-- <maxFileSize>1KB</maxFileSize>-->
    110. <!-- 归档文件占用磁盘总大小,超过后会根据cleanHistoryOnStart实行,决定是否删除 -->
    111. <totalSizeCap>1GB</totalSizeCap>
    112. <!-- <totalSizeCap>10KB</totalSizeCap>-->
    113. <!-- 保留的历史归档日志文件天数-->
    114. <maxHistory>30</maxHistory>
    115. </rollingPolicy>
    116. <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
    117. <level>ERROR</level>
    118. </filter>
    119. </appender>
    120. <!-- 级别依次为【从高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE -->
    121. <springProfile name="txtest,txprod,prod,test">
    122. <root level="${LOG_LEVEL}">
    123. <!--日志输出到文件-->
    124. <appender-ref ref="debug"/>
    125. <appender-ref ref="info"/>
    126. <appender-ref ref="warn"/>
    127. <appender-ref ref="error"/>
    128. </root>
    129. </springProfile>
    130. <!-- 本地、开发环境,日志配置 可以写logback支持的所有节点 -->
    131. <springProfile name="local,dev">
    132. <root level="${LOG_LEVEL}">
    133. <!--控制台日志:生产环境建议关掉-->
    134. <appender-ref ref="STDOUT"/>
    135. <appender-ref ref="debug"/>
    136. <appender-ref ref="info"/>
    137. <appender-ref ref="warn"/>
    138. <appender-ref ref="error"/>
    139. </root>
    140. <!-- 一般dao操作被项目封装可以设置项目上的封装路径-->
    141. <logger name="com.ikeeper.mapper.base" level="debug"/>
    142. </springProfile>
    143. <!--打印SQL-->
    144. <!-- <logger name="java.sql.Connection" level="DEBUG"/>-->
    145. <!-- <logger name="java.sql.Statement" level="DEBUG"/>-->
    146. <!-- <logger name="java.sql.PreparedStatement" level="DEBUG"/>-->
    147. <!-- 一般dao操作被项目封装可以设置项目上的封装路径-->
    148. <!-- <logger name="com.ikeeper.mapper.base" level="debug"/>-->
    149. </configuration>

  • 相关阅读:
    344. Reverse String
    「笔试刷题」:游游的you
    allatori8.0文档翻译-第七步:多个jar文件不混淆加水印
    人工智能辅导程序 Mr. Ranedeer AI Tutor
    图解直接映射(Direct mapped)、全相联(Fully-associative)和组相联(Set-associative)cache缓存基本原理
    JavaScript 62 JavaScript 版本 62.3 JavaScript ES6
    【docker部署nacos详细步骤《一》】
    Apollo Planning2.0决策规划算法代码详细解析 (2): vscode gdb单步调试环境搭建
    Quarkus 替代 SpringBoot
    1018hw
  • 原文地址:https://blog.csdn.net/qq_36577291/article/details/136123109