logback-spring.xml 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration scan="true" scanPeriod="60 seconds" debug="false">
  3. <!-- 日志输出格式 -->
  4. <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS,CTT} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
  5. <!-- 邮件 -->
  6. <!-- SMTP server的地址,必需指定。如网易的SMTP服务器地址是: smtp.163.com -->
  7. <property name="smtpHost" value="smtp.163.com"/><!--填入要发送邮件的smtp服务器地址-->
  8. <!-- SMTP server的端口地址。默认值:25 -->
  9. <property name="smtpPort" value="25"/>
  10. <!-- 发送邮件账号,默认为null -->
  11. <property name="username" value="*"/><!--发件人账号-->
  12. <!-- 发送邮件密码,默认为null -->
  13. <property name="password" value="*"/><!--发件人密码-->
  14. <!-- 如果设置为true,appender将会使用SSL连接到日志服务器。默认值:false -->
  15. <property name="SSL" value="true"/>
  16. <!-- 指定发送到那个邮箱,可设置多个<to>属性,指定多个目的邮箱 -->
  17. <property name="email_to" value="*"/>
  18. <!--收件人账号多个可以逗号隔开-->
  19. <!-- 指定发件人名称。如果设置成“&lt;ADMIN&gt; ”,则邮件发件人将会是“<ADMIN> ” -->
  20. <property name="email_from" value="1" />
  21. <!-- 指定emial的标题,它需要满足PatternLayout中的格式要求。如果设置成“Log: %logger - %msg ”,就案例来讲,则发送邮件时,标题为“【Error】: com.foo.Bar - Hello World ”。 默认值:"%logger{20} - %m". -->
  22. <property name="email_subject" value="【linkwechat-wecom】【Error】: %logger" />
  23. <property name="app_name" value="linkwe-wecom"/>
  24. <!-- 日志根目录-->
  25. <springProperty scope="context" name="log.path" source="logging.path"
  26. defaultValue="./logs/linkwe-wecom"/>
  27. <!-- 控制台输出 -->
  28. <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
  29. <encoder>
  30. <pattern>${log.pattern}</pattern>
  31. </encoder>
  32. </appender>
  33. <!-- 系统日志输出 -->
  34. <!-- 循环文件输出(基于时间戳的分文件,是实际项目中用途最广的一种情况) -->
  35. <appender name="file_debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
  36. <file>${log.path}/debug/${app_name}.debug.log</file>
  37. <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
  38. <!-- rollover daily -->
  39. <fileNamePattern>${log.path}/debug/${app_name}_%d{yyyy-MM-dd}.debug.%i.log</fileNamePattern>
  40. <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
  41. <maxFileSize>50MB</maxFileSize>
  42. <maxHistory>30</maxHistory>
  43. <totalSizeCap>10GB</totalSizeCap>
  44. </rollingPolicy>
  45. <encoder>
  46. <pattern>${log.pattern}</pattern>
  47. </encoder>
  48. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  49. <level>DEBUG</level>
  50. <onMatch>ACCEPT</onMatch>
  51. <onMismatch>DENY</onMismatch>
  52. </filter>
  53. </appender>
  54. <!-- 异步输出 -->
  55. <appender name="arollingfile_debug" class="ch.qos.logback.classic.AsyncAppender">
  56. <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
  57. <discardingThreshold>0</discardingThreshold>
  58. <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
  59. <queueSize>1</queueSize>
  60. <!-- 添加附加的appender,最多只能添加一个 -->
  61. <appender-ref ref="file_debug"/>
  62. </appender>
  63. <!-- 循环文件输出(基于时间戳的分文件,是实际项目中用途最广的一种情况) -->
  64. <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
  65. <file>${log.path}/info/${app_name}.info.log</file>
  66. <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
  67. <!-- rollover daily -->
  68. <fileNamePattern>${log.path}/info/${app_name}_%d{yyyy-MM-dd}.info.%i.log</fileNamePattern>
  69. <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
  70. <maxFileSize>50MB</maxFileSize>
  71. <maxHistory>30</maxHistory>
  72. <totalSizeCap>10GB</totalSizeCap>
  73. </rollingPolicy>
  74. <encoder>
  75. <pattern>${log.pattern}</pattern>
  76. </encoder>
  77. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  78. <level>INFO</level>
  79. <onMatch>ACCEPT</onMatch>
  80. <onMismatch>DENY</onMismatch>
  81. </filter>
  82. </appender>
  83. <!-- 异步输出 -->
  84. <appender name="arollingfile_info" class="ch.qos.logback.classic.AsyncAppender">
  85. <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
  86. <discardingThreshold>0</discardingThreshold>
  87. <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
  88. <queueSize>1</queueSize>
  89. <!-- 添加附加的appender,最多只能添加一个 -->
  90. <appender-ref ref="file_info"/>
  91. </appender>
  92. <!-- 循环文件输出(基于时间戳的分文件,是实际项目中用途最广的一种情况) -->
  93. <appender name="file_warn" class="ch.qos.logback.core.rolling.RollingFileAppender">
  94. <file>${log.path}/warn/${app_name}.warn.log</file>
  95. <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
  96. <!-- rollover daily -->
  97. <fileNamePattern>${log.path}/warn/${app_name}_%d{yyyy-MM-dd}.warn.%i.log</fileNamePattern>
  98. <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
  99. <maxFileSize>50MB</maxFileSize>
  100. <maxHistory>30</maxHistory>
  101. <totalSizeCap>10GB</totalSizeCap>
  102. </rollingPolicy>
  103. <encoder>
  104. <pattern>${log.pattern}</pattern>
  105. </encoder>
  106. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  107. <level>WARN</level>
  108. <onMatch>ACCEPT</onMatch>
  109. <onMismatch>DENY</onMismatch>
  110. </filter>
  111. </appender>
  112. <!-- 异步输出 -->
  113. <appender name="arollingfile_warn" class="ch.qos.logback.classic.AsyncAppender">
  114. <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
  115. <discardingThreshold>0</discardingThreshold>
  116. <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
  117. <queueSize>1</queueSize>
  118. <!-- 添加附加的appender,最多只能添加一个 -->
  119. <appender-ref ref="file_warn"/>
  120. </appender>
  121. <!-- 循环文件输出(基于时间戳的分文件,是实际项目中用途最广的一种情况) -->
  122. <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
  123. <file>${log.path}/error/${app_name}.error.log</file>
  124. <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
  125. <!-- rollover daily -->
  126. <fileNamePattern>${log.path}/error/${app_name}_%d{yyyy-MM-dd}.error.%i.log</fileNamePattern>
  127. <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
  128. <maxFileSize>50MB</maxFileSize>
  129. <maxHistory>30</maxHistory>
  130. <totalSizeCap>10GB</totalSizeCap>
  131. </rollingPolicy>
  132. <encoder>
  133. <pattern>${log.pattern}</pattern>
  134. </encoder>
  135. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  136. <level>ERROR</level>
  137. <onMatch>ACCEPT</onMatch>
  138. <onMismatch>DENY</onMismatch>
  139. </filter>
  140. </appender>
  141. <!-- 异步输出 -->
  142. <appender name="arollingfile_error" class="ch.qos.logback.classic.AsyncAppender">
  143. <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
  144. <discardingThreshold>0</discardingThreshold>
  145. <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
  146. <queueSize>1</queueSize>
  147. <!-- 添加附加的appender,最多只能添加一个 -->
  148. <appender-ref ref="file_error"/>
  149. </appender>
  150. <!-- ERROR邮件发送 -->
  151. <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
  152. <smtpHost>${smtpHost}</smtpHost>
  153. <smtpPort>${smtpPort}</smtpPort>
  154. <username>${username}</username>
  155. <password>${password}</password>
  156. <!-- <asynchronousSending>true</asynchronousSending>-->
  157. <SSL>${SSL}</SSL>
  158. <!--<STARTTLS>true</STARTTLS>-->
  159. <to>${email_to}</to>
  160. <from>${email_from}</from>
  161. <subject>${email_subject}</subject>
  162. <!-- html格式-->
  163. <layout class="ch.qos.logback.classic.html.HTMLLayout">
  164. <Pattern>%date%level%thread%logger{0}%line%message</Pattern>
  165. </layout>
  166. <!-- 这里采用等级过滤器 指定等级相符才发送 -->
  167. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  168. <level>ERROR</level>
  169. <onMatch>ACCEPT</onMatch>
  170. <onMismatch>DENY</onMismatch>
  171. </filter>
  172. <cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
  173. <!-- 每个电子邮件只发送一个日志条目 -->
  174. <bufferSize>1</bufferSize>
  175. </cyclicBufferTracker>
  176. </appender>
  177. <!-- 系统模块日志级别控制 -->
  178. <logger name="cn.linkwechat" level="info" />
  179. <!-- Spring日志级别控制 -->
  180. <logger name="org.springframework" level="warn" />
  181. <!--系统操作日志-->
  182. <root level="info">
  183. <appender-ref ref="console" />
  184. <appender-ref ref="arollingfile_debug" />
  185. <appender-ref ref="arollingfile_info" />
  186. <appender-ref ref="arollingfile_warn" />
  187. <appender-ref ref="arollingfile_error" />
  188. <!-- <appender-ref ref="alarm_error" />-->
  189. <appender-ref ref="EMAIL" />
  190. </root>
  191. </configuration>