logback-spring.xml 10.0 KB

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