1. logback日志相关介绍:

日志级别: 从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATA;【只会显示高于指定级别的日志】

2. spring-logback.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
  3. <!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true -->
  4. <!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。
  5. 当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
  6. <!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
  7. <configuration scan="true" scanPeriod="10 seconds">
  8. <contextName>logback-spring</contextName>
  9. <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
  10. <springProperty name="logging.path" scope="context" source="logging.path" defaultValue="E:\\TEST\\logs" />
  11. <!-- logback项目名称 -->
  12. <property name="appName" value="you-app-name"/>
  13. <!-- 日志级别 DEBUGER INFO WARN ERROR -->
  14. <property name="logLevel" value="ERROR"/>
  15. <!-- 最大保存时间 30天-->
  16. <property name="maxHistory" value="7"/>
  17. <!-- 异步缓冲队列的深度,该值会影响性能.默认值为256 -->
  18. <property name="queueSize" value="256"/>
  19. <!-- lOGGER PATTERN 传统的日志格式;也可以选用具有色彩的格式 -->
  20. <property name="LOG_PATTERN"
  21. value="[ %-5level] [%date{yyyy-MM-dd HH:mm:ss.SSS}] %logger{96} [%line] [%thread]- %msg%n"/>
  22. <!-- %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n -->
  23. <!-- %d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{35} - %msg %n -->
  24. <!-- [ %-5level] [%date{yyyy-MM-dd HH:mm:ss.SSS}] %logger{96} [%line] [%thread]- %msg%n -->
  25. <!--0. 日志格式和颜色渲染 -->
  26. <!-- 彩色日志依赖的渲染类 -->
  27. <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
  28. <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
  29. <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
  30. <!-- 彩色日志格式 -->
  31. <property name="CONSOLE_LOG_PATTERN" 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}}"/>
  32. <!--1. 输出到控制台-->
  33. <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
  34. <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
  35. <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
  36. <level>debug</level>
  37. </filter>
  38. <encoder>
  39. <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
  40. <!-- 设置字符集 -->
  41. <charset>UTF-8</charset>
  42. </encoder>
  43. </appender>
  44. <!--2. 输出到文档-->
  45. <!-- 2.1 level为 DEBUG 日志,时间滚动输出 -->
  46. <appender name="FILE_DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
  47. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  48. <level>DEBUG</level>
  49. <onMatch>ACCEPT</onMatch>
  50. <onMismatch>DENY</onMismatch>
  51. </filter>
  52. <file>${logPath}/${appName}_debug.log</file>
  53. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  54. <fileNamePattern>${logPath}/debug/${appName}_debug.log.%d{yyyy-MM-dd}.zip
  55. </fileNamePattern>
  56. <maxHistory>${maxHistory}</maxHistory>
  57. </rollingPolicy>
  58. <encoder>
  59. <pattern>${CONSOLE_LOG_PATTERN}</pattern>
  60. </encoder>
  61. </appender>
  62. <!-- 2.2 level为 INFO 日志,时间滚动输出 -->
  63. <appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
  64. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  65. <level>INFO</level>
  66. <onMatch>ACCEPT</onMatch>
  67. <onMismatch>DENY</onMismatch>
  68. </filter>
  69. <file>${logPath}/${appName}_info.log</file>
  70. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  71. <fileNamePattern>${logPath}/info/${appName}_info.log.%d{yyyy-MM-dd}.zip
  72. </fileNamePattern>
  73. <maxHistory>${maxHistory}</maxHistory>
  74. </rollingPolicy>
  75. <encoder>
  76. <pattern>${logPattern}</pattern>
  77. </encoder>
  78. </appender>
  79. <!-- 2.3 level为 WARN 日志,时间滚动输出 -->
  80. <appender name="FILE_WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
  81. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  82. <level>WARN</level>
  83. <onMatch>ACCEPT</onMatch>
  84. <onMismatch>DENY</onMismatch>
  85. </filter>
  86. <file>${logPath}/${appName}_warn.log</file>
  87. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  88. <fileNamePattern>${logPath}/warn/${appName}_warn.log.%d{yyyy-MM-dd}.zip
  89. </fileNamePattern>
  90. <maxHistory>${maxHistory}</maxHistory>
  91. </rollingPolicy>
  92. <encoder>
  93. <pattern>${logPattern}</pattern>
  94. </encoder>
  95. </appender>
  96. <!-- 2.4 level为 ERROR 日志,时间滚动输出 -->
  97. <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
  98. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  99. <level>ERROR</level>
  100. <onMatch>ACCEPT</onMatch>
  101. <onMismatch>DENY</onMismatch>
  102. </filter>
  103. <file>${logPath}/${appName}_error.log</file>
  104. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  105. <fileNamePattern>${logPath}/error/${appName}_error.log.%d{yyyy-MM-dd}.zip
  106. </fileNamePattern>
  107. <maxHistory>${maxHistory}</maxHistory>
  108. </rollingPolicy>
  109. <encoder>
  110. <pattern>${logPattern}</pattern>
  111. </encoder>
  112. </appender>
  113. <!-- ASYNC_LOG_DEBUG -->
  114. <appender name="ASYNC_LOG_DEBUG" class="ch.qos.logback.classic.AsyncAppender">
  115. <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
  116. <discardingThreshold>80</discardingThreshold>
  117. <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
  118. <queueSize>${queueSize}</queueSize>
  119. <appender-ref ref="FILE_DEBUG"/>
  120. </appender>
  121. <!-- ASYNC_LOG_INFO -->
  122. <appender name="ASYNC_LOG_INFO" class="ch.qos.logback.classic.AsyncAppender">
  123. <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
  124. <discardingThreshold>0</discardingThreshold>
  125. <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
  126. <queueSize>${queueSize}</queueSize>
  127. <appender-ref ref="FILE_INFO"/>
  128. </appender>
  129. <!-- ASYNC_LOG_WARN -->
  130. <appender name="ASYNC_LOG_WARN" class="ch.qos.logback.classic.AsyncAppender">
  131. <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
  132. <discardingThreshold>0</discardingThreshold>
  133. <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
  134. <queueSize>${queueSize}</queueSize>
  135. <appender-ref ref="FILE_WARN"/>
  136. </appender>
  137. <!--ASYNC_LOG_ERROR -->
  138. <appender name="ASYNC_LOG_ERROR" class="ch.qos.logback.classic.AsyncAppender">
  139. <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
  140. <discardingThreshold>0</discardingThreshold>
  141. <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
  142. <queueSize>${queueSize}</queueSize>
  143. <appender-ref ref="FILE_ERROR"/>
  144. </appender>
  145. <!--
  146. <logger>用来设置某一个包或者具体的某一个类的日志打印级别、
  147. 以及指定<appender>。<logger>仅有一个name属性,
  148. 一个可选的level和一个可选的addtivity属性。
  149. name:用来指定受此logger约束的某一个包或者具体的某一个类。
  150. level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
  151. 还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。
  152. 如果未设置此属性,那么当前logger将会继承上级的级别。
  153. addtivity:是否向上级logger传递打印信息。默认是true。
  154. <logger name="org.springframework.web" level="info"/>
  155. <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>
  156. -->
  157. <!--
  158. 使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作:
  159. 第一种把<root level="info">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息
  160. 第二种就是单独给dao下目录配置debug模式,代码如下,这样配置sql语句会打印,其他还是正常info级别:
  161. 【logging.level.org.mybatis=debug logging.level.dao=debug】
  162. -->
  163. <!--
  164. root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
  165. level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
  166. 不能设置为INHERITED或者同义词NULL。默认是DEBUG
  167. 可以包含零个或多个元素,标识这个appender将会添加到这个logger。
  168. -->
  169. <logger name="org.springframework" level="INFO" />
  170. <logger name="org.springframework.web" level="INFO" />
  171. <logger name="freemarker.cache" level="ERROR" />
  172. <logger name="org.apache.commons" level="ERROR" />
  173. <logger name="org.apache" level="WARN"/>
  174. <logger name="com.netflix.discovery" level="WARN"/>
  175. <logger name="javax.activation" level="WARN"/>
  176. <logger name="org.mybatis.spring" level="DEBUG"/>
  177. <!-- 4. 最终的策略 -->
  178. <!-- 4.1 开发环境:打印控制台-->
  179. <root level="${logLevel}">
  180. <!-- 控制台 -->
  181. <appender-ref ref="STDOUT"/>
  182. <!-- 具体的日志级别和文件的配置 -->
  183. <appender-ref ref="ASYNC_LOG_DEBUG"/>
  184. <appender-ref ref="ASYNC_LOG_INFO"/>
  185. <appender-ref ref="ASYNC_LOG_WARN"/>
  186. <appender-ref ref="ASYNC_LOG_ERROR"/>
  187. </root>
  188. </configuration>