logback-prod.xml 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration scan="true" scanPeriod="60 seconds">
  3. <!-- 自定义参数监听 -->
  4. <contextListener class="org.springblade.core.log.listener.LoggerStartupListener"/>
  5. <springProperty scope="context" name="springAppName" source="spring.application.name"/>
  6. <!-- 彩色日志依赖的渲染类 -->
  7. <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
  8. <conversionRule conversionWord="wex"
  9. converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
  10. <conversionRule conversionWord="wEx"
  11. converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
  12. <!-- 彩色日志格式 -->
  13. <property name="CONSOLE_LOG_PATTERN"
  14. value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
  15. <!-- 控制台输出 -->
  16. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  17. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  18. <pattern>${CONSOLE_LOG_PATTERN}</pattern>
  19. <charset>utf8</charset>
  20. </encoder>
  21. </appender>
  22. <!-- 生成日志文件 -->
  23. <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
  24. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  25. <!-- 日志文件输出的文件名 -->
  26. <FileNamePattern>target/blade/log/info-%d{yyyy-MM-dd}.log</FileNamePattern>
  27. </rollingPolicy>
  28. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  29. <pattern>%n%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] [%logger{50}] %n%-5level: %msg%n</pattern>
  30. </encoder>
  31. <!-- 打印日志级别 -->
  32. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  33. <level>INFO</level>
  34. <onMatch>ACCEPT</onMatch>
  35. <onMismatch>DENY</onMismatch>
  36. </filter>
  37. </appender>
  38. <!-- 生成日志文件 -->
  39. <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
  40. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  41. <!-- 日志文件输出的文件名 -->
  42. <FileNamePattern>target/blade/log/error-%d{yyyy-MM-dd}.log</FileNamePattern>
  43. </rollingPolicy>
  44. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  45. <pattern>%n%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] [%logger{50}] %n%-5level: %msg%n</pattern>
  46. </encoder>
  47. <!-- 打印日志级别 -->
  48. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  49. <level>ERROR</level>
  50. <onMatch>ACCEPT</onMatch>
  51. <onMismatch>DENY</onMismatch>
  52. </filter>
  53. </appender>
  54. <if condition='property("ELK_MODE").toUpperCase().contains("TRUE")'>
  55. <then>
  56. <!-- 推送日志至elk -->
  57. <appender name="INFO_LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
  58. <destination>${DESTINATION}</destination>
  59. <!-- 日志输出编码 -->
  60. <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
  61. <providers>
  62. <timestamp>
  63. <timeZone>UTC</timeZone>
  64. </timestamp>
  65. <pattern>
  66. <pattern>
  67. {
  68. "traceId": "%X{traceId}",
  69. "requestId": "%X{requestId}",
  70. "accountId": "%X{accountId}",
  71. "tenantId": "%X{tenantId}",
  72. "logLevel": "%level",
  73. "serviceName": "${springAppName:-SpringApp}",
  74. "pid": "${PID:-}",
  75. "thread": "%thread",
  76. "class": "%logger{40}",
  77. "line":"%L",
  78. "message": "%message"
  79. }
  80. </pattern>
  81. </pattern>
  82. <mdc/>
  83. <stackTrace/>
  84. </providers>
  85. </encoder>
  86. <!-- 打印日志级别 -->
  87. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  88. <level>INFO</level>
  89. <onMatch>ACCEPT</onMatch>
  90. <onMismatch>DENY</onMismatch>
  91. </filter>
  92. </appender>
  93. <!-- 推送日志至elk -->
  94. <appender name="ERROR_LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
  95. <destination>${DESTINATION}</destination>
  96. <!-- 日志输出编码 -->
  97. <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
  98. <providers>
  99. <timestamp>
  100. <timeZone>UTC</timeZone>
  101. </timestamp>
  102. <pattern>
  103. <pattern>
  104. {
  105. "traceId": "%X{traceId}",
  106. "requestId": "%X{requestId}",
  107. "accountId": "%X{accountId}",
  108. "tenantId": "%X{tenantId}",
  109. "logLevel": "%level",
  110. "serviceName": "${springAppName:-SpringApp}",
  111. "pid": "${PID:-}",
  112. "thread": "%thread",
  113. "class": "%logger{40}",
  114. "line":"%L",
  115. "message": "%message"
  116. }
  117. </pattern>
  118. </pattern>
  119. <mdc/>
  120. <stackTrace/>
  121. </providers>
  122. </encoder>
  123. <!-- 打印日志级别 -->
  124. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  125. <level>ERROR</level>
  126. <onMatch>ACCEPT</onMatch>
  127. <onMismatch>DENY</onMismatch>
  128. </filter>
  129. </appender>
  130. </then>
  131. </if>
  132. <!-- 日志输出级别 -->
  133. <root level="INFO">
  134. <appender-ref ref="STDOUT"/>
  135. <appender-ref ref="${INFO_APPENDER}"/>
  136. <appender-ref ref="${ERROR_APPENDER}"/>
  137. </root>
  138. <logger name="net.sf.ehcache" level="INFO"/>
  139. <logger name="druid.sql" level="INFO"/>
  140. <!-- 减少nacos日志 -->
  141. <logger name="com.alibaba.nacos" level="ERROR"/>
  142. </configuration>