logback-spring.xml 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration scan="true" scanPeriod="60 seconds" debug="false">
  3. <property name="LOG_MAX_HISTORY" value="180"/>
  4. <springProperty scope="context" name="LOG_PATH" source="logging.path"/>
  5. <!-- 控制台输出 -->
  6. <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
  7. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  8. <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
  9. <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%X{TRACE_ID}) %-5level %logger{50} - %msg%n</pattern>
  10. <charset>utf-8</charset>
  11. </encoder>
  12. </appender>
  13. <!-- 自定义Appender -->
  14. <appender name="logAd" class="com.fdkk.sxz.logging.LogAppender">
  15. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  16. <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
  17. <pattern>${LOG_PATH}/%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %X{TRACE_ID} %-5level %logger{50} - %msg%n</pattern>
  18. <charset>utf-8</charset>
  19. </encoder>
  20. </appender>
  21. <!-- 按照每天生成日志文件:主项目日志 -->
  22. <appender name="file.all" class="ch.qos.logback.core.rolling.RollingFileAppender">
  23. <!-- 追加日志到原文件结尾 -->
  24. <Prudent>true</Prudent>
  25. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  26. <!--日志文件输出的文件名 -->
  27. <FileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
  28. <MaxHistory>${LOG_MAX_HISTORY}</MaxHistory>
  29. <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  30. <!-- 除按日志记录之外,还配置了日志文件不能超过10M(默认),若超过10M,日志文件会以索引0开始, -->
  31. <maxFileSize>10MB</maxFileSize>
  32. </timeBasedFileNamingAndTriggeringPolicy>
  33. </rollingPolicy>
  34. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  35. <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
  36. <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %X{TRACE_ID} %-5level %logger{500} - %msg%n</pattern>
  37. <charset>utf-8</charset>
  38. </encoder>
  39. </appender>
  40. <!--info日志统一输出到这里-->
  41. <appender name="file.info" class="ch.qos.logback.core.rolling.RollingFileAppender">
  42. <Prudent>true</Prudent>
  43. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  44. <!--日志文件输出的文件名 每小时生成日志文件 -->
  45. <FileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/info/console-info.%d{yyyy-MM-dd-HH}.%i.log</FileNamePattern>
  46. <MaxHistory>${LOG_MAX_HISTORY}</MaxHistory>
  47. <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  48. <!-- 除按日志记录之外,还配置了日志文件不能超过10M(默认),若超过10M,日志文件会以索引0开始, -->
  49. <maxFileSize>10MB</maxFileSize>
  50. </timeBasedFileNamingAndTriggeringPolicy>
  51. </rollingPolicy>
  52. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  53. <!--格式化输出:%d表示日期,%thread表示线程,%-5level:级别从左显示5个字符宽度 %method 方法名 %L 行数 %msg:日志消息,%n是换行符-->
  54. <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %X{TRACE_ID} %-5level %logger{56}.%method:%L - %msg%n</pattern>
  55. <charset>utf-8</charset>
  56. </encoder>
  57. <!-- 此日志文件只记录info级别的 -->
  58. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  59. <level>INFO</level>
  60. <onMatch>ACCEPT</onMatch>
  61. <onMismatch>DENY</onMismatch>
  62. </filter>
  63. </appender>
  64. <!--错误日志统一输出到这里-->
  65. <appender name="file.error" class="ch.qos.logback.core.rolling.RollingFileAppender">
  66. <Prudent>true</Prudent>
  67. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  68. <!--日志文件输出的文件名-->
  69. <FileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/error/console-error.%d{yyyy-MM-dd-HH}.%i.log</FileNamePattern>
  70. <!--日志文件保留天数-->
  71. <MaxHistory>${LOG_MAX_HISTORY}</MaxHistory>
  72. <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  73. <!-- 除按日志记录之外,还配置了日志文件不能超过10M(默认),若超过10M,日志文件会以索引0开始, -->
  74. <maxFileSize>10MB</maxFileSize>
  75. </timeBasedFileNamingAndTriggeringPolicy>
  76. </rollingPolicy>
  77. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  78. <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %method 方法名 %L 行数 %msg:日志消息,%n是换行符-->
  79. <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %X{TRACE_ID} %-5level %logger{56}.%method:%L - %msg%n</pattern>
  80. <charset>utf-8</charset>
  81. </encoder>
  82. <!-- 此日志文件只记录error级别的 -->
  83. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  84. <level>ERROR</level>
  85. <onMatch>ACCEPT</onMatch>
  86. <onMismatch>DENY</onMismatch>
  87. </filter>
  88. </appender>
  89. <!--warn日志统一输出到这里-->
  90. <appender name="file.warn" class="ch.qos.logback.core.rolling.RollingFileAppender">
  91. <Prudent>true</Prudent>
  92. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  93. <!--日志文件输出的文件名 按小时生成日志-->
  94. <FileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/warn/console-warn.%d{yyyy-MM-dd-HH}.%i.log</FileNamePattern>
  95. <!--日志文件保留天数-->
  96. <MaxHistory>${LOG_MAX_HISTORY}</MaxHistory>
  97. <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  98. <!-- 除按日志记录之外,还配置了日志文件不能超过10M(默认),若超过10M,日志文件会以索引0开始, -->
  99. <maxFileSize>10MB</maxFileSize>
  100. </timeBasedFileNamingAndTriggeringPolicy>
  101. </rollingPolicy>
  102. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  103. <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %method 方法名 %L 行数 %msg:日志消息,%n是换行符-->
  104. <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %X{TRACE_ID} %-5level %logger{56}.%method:%L - %msg%n</pattern>
  105. <charset>utf-8</charset>
  106. </encoder>
  107. <!-- 此日志文件只记录warn级别的 -->
  108. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  109. <level>WARN</level>
  110. <onMatch>ACCEPT</onMatch>
  111. <onMismatch>DENY</onMismatch>
  112. </filter>
  113. </appender>
  114. <!--debug级别日志统一输出到这里-->
  115. <appender name="file.debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
  116. <Prudent>true</Prudent>
  117. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  118. <!--日志文件输出的文件名 按小时生成日志-->
  119. <FileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/debug/console-debug.%d{yyyy-MM-dd-HH}.%i.log</FileNamePattern>
  120. <!--日志文件保留天数-->
  121. <MaxHistory>${LOG_MAX_HISTORY}</MaxHistory>
  122. <!-- 除按日志记录之外,还配置了日志文件不能超过5M,若超过5M,日志文件会以索引0开始,命名日志文件,例如console-debug.2018-08-24-09.1.log -->
  123. <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  124. <maxFileSize>10MB</maxFileSize>
  125. </timeBasedFileNamingAndTriggeringPolicy>
  126. </rollingPolicy>
  127. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  128. <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %method 方法名 %L 行数 %msg:日志消息,%n是换行符-->
  129. <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %X{TRACE_ID} %-5level %logger{56}.%method:%L - %msg%n</pattern>
  130. <charset>utf-8</charset>
  131. </encoder>
  132. <!-- 此日志文件只记录debug级别的 -->
  133. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  134. <level>DEBUG</level>
  135. <onMatch>ACCEPT</onMatch>
  136. <onMismatch>DENY</onMismatch>
  137. </filter>
  138. </appender>
  139. <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
  140. <appender name="file.async" class="ch.qos.logback.classic.AsyncAppender">
  141. <discardingThreshold>0</discardingThreshold>
  142. <queueSize>256</queueSize>
  143. <includeCallerData>true</includeCallerData>
  144. <appender-ref ref="file.all"/>
  145. </appender>
  146. <!--myibatis log configure-->
  147. <logger name="com.apache.ibatis" level="DEBUG"/>
  148. <logger name="java.sql.Connection" level="DEBUG"/>
  149. <logger name="java.sql.Statement" level="DEBUG"/>
  150. <logger name="java.sql.PreparedStatement" level="DEBUG"/>
  151. <logger name="io.lettuce.core.protocol" level="ERROR">
  152. <appender-ref ref="file.warn"/>
  153. </logger>
  154. <!-- 日志输出级别 -->
  155. <!-- TRACE\DEBUG\INFO\WARN\ERROR\FATAL\OFF -->
  156. <root level="INFO">
  157. <appender-ref ref="console"/>
  158. <appender-ref ref="logAd"/>
  159. <appender-ref ref="file.async"/>
  160. <appender-ref ref="file.error"/>
  161. <appender-ref ref="file.info"/>
  162. <appender-ref ref="file.debug"/>
  163. <appender-ref ref="file.warn"/>
  164. </root>
  165. </configuration>