springboot日志logback配置

  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <!--
  3     scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
  4     scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒;当scan为true时,此属性生效。默认的时间间隔为1分钟。
  5     debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。
  6 -->
  7 <configuration scan="false" scanPeriod="60 seconds" debug="false">
  8     <!-- 定义日志的根目录 -->
  9     <property name="LOG_HOME" value="logs"/>
 10     <!-- 定义日志文件名称 -->
 11     <property name="appName" value="log"></property>
 12     <!-- ch.qos.logback.core.ConsoleAppender 表示控制台输出 -->
 13     <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
 14         <!--
 15         日志输出格式:
 16             %d表示日期时间,
 17             %thread表示线程名,
 18             %-5level:级别从左显示5个字符宽度
 19             %logger{50} 表示logger名字最长50个字符,否则按照句点分割。
 20             %msg:日志消息,
 21             %n是换行符
 22         -->
 23         <layout class="ch.qos.logback.classic.PatternLayout">
 24             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ==> [%thread] ==> %-5level %logger{50} - %msg%n</pattern>
 25         </layout>
 26     </appender>
 27 
 28     <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 -->
 29     <appender name="appLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
 30         <!-- 指定日志文件的名称 -->
 31         <file>${LOG_HOME}/${appName}.log</file>
 32         <!--
 33         当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名
 34         TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动。
 35         -->
 36         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
 37             <!--
 38             滚动时产生的文件的存放位置及文件名称 %d{yyyy-MM-dd}:按天进行日志滚动
 39             %i:当文件大小超过maxFileSize时,按照i进行文件滚动
 40             -->
 41             <fileNamePattern>${LOG_HOME}/${appName}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
 42             <!--
 43             可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每天滚动,
 44             且maxHistory是365,则只保存最近365天的文件,删除之前的旧文件。注意,删除旧文件是,
 45             那些为了归档而创建的目录也会被删除。
 46             -->
 47             <MaxHistory>365</MaxHistory>
 48             <!--
 49             当日志文件超过maxFileSize指定的大小时,根据上面提到的%i进行日志文件滚动
 50             注意此处配置SizeBasedTriggeringPolicy是无法实现按文件大小进行滚动的,必须配置timeBasedFileNamingAndTriggeringPolicy
 51             -->
 52             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
 53                 <maxFileSize>1KB</maxFileSize>
 54             </timeBasedFileNamingAndTriggeringPolicy>
 55         </rollingPolicy>
 56         <!-- 日志输出格式: -->
 57         <layout class="ch.qos.logback.classic.PatternLayout">
 58             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - %msg%n</pattern>
 59         </layout>
 60         <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印ERROR日志 -->
 61             <level>ERROR</level>
 62             <onMatch>ACCEPT</onMatch>
 63             <onMismatch>DENY</onMismatch>
 64         </filter>
 65     </appender>
 66 
 67     <!--输出到error-->
 68     <appender name="appLogAppenderError" class="ch.qos.logback.core.rolling.RollingFileAppender">
 69         <!-- 指定日志文件的名称 -->
 70         <file>${LOG_HOME}/${appName}-error.log</file>
 71         <!--
 72         当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名
 73         TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动。
 74         -->
 75         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
 76             <!--
 77             滚动时产生的文件的存放位置及文件名称 %d{yyyy-MM-dd}:按天进行日志滚动
 78             %i:当文件大小超过maxFileSize时,按照i进行文件滚动
 79             -->
 80             <fileNamePattern>${LOG_HOME}/${appName}-error-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
 81             <!--
 82             可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每天滚动,
 83             且maxHistory是365,则只保存最近365天的文件,删除之前的旧文件。注意,删除旧文件是,
 84             那些为了归档而创建的目录也会被删除。
 85             -->
 86             <MaxHistory>365</MaxHistory>
 87             <!--
 88             当日志文件超过maxFileSize指定的大小时,根据上面提到的%i进行日志文件滚动
 89             注意此处配置SizeBasedTriggeringPolicy是无法实现按文件大小进行滚动的,必须配置timeBasedFileNamingAndTriggeringPolicy
 90             -->
 91             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
 92                 <maxFileSize>1KB</maxFileSize>
 93             </timeBasedFileNamingAndTriggeringPolicy>
 94         </rollingPolicy>
 95         <!-- 日志输出格式: -->
 96         <layout class="ch.qos.logback.classic.PatternLayout">
 97             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - %msg%n</pattern>
 98         </layout>
 99         <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印ERROR日志 -->
100             <level>ERROR</level>
101             <onMatch>ACCEPT</onMatch>
102             <onMismatch>DENY</onMismatch>
103         </filter>
104     </appender>
105 
106 
107     <!--
108         logger主要用于存放日志对象,也可以定义日志类型、级别
109         name:表示匹配的logger类型前缀,也就是包的前半部分
110         level:要记录的日志级别,包括 TRACE < DEBUG < INFO < WARN < ERROR
111         additivity:作用在于children-logger是否使用 rootLogger配置的appender进行输出,
112         false:表示只用当前logger的appender-ref,true:
113         表示当前logger的appender-ref和rootLogger的appender-ref都有效
114     -->
115     <!-- app logger -->
116     <logger name="com.qianxingniwo" level="debug"/>
117     <!-- Spring framework logger -->
118     <logger name="org.springframework" level="debug" additivity="false"></logger>
119 
120     <!--
121     root与logger是父子关系,没有特别定义则默认为root,任何一个类只会和一个logger对应,
122     要么是定义的logger,要么是root,判断的关键在于找到这个logger,然后判断这个logger的appender和level。
123     -->
124     <root level="info">
125         <appender-ref ref="stdout"/>
126         <appender-ref ref="appLogAppender"/>
127         <appender-ref ref="appLogAppenderError"/>
128     </root>
129 </configuration>

 

 

2、%C{length}、%class{length}:输出发生日志事件的调用类的全限定名。与%logger类似,{length}可选项来限定类名的长度,适度进行缩写。

3、%d{pattern}、%date{pattern}、%d{pattern,timezone}、%date{pattern,timezone}:输出日志事件的时间;{pattern}为可选项,用于声明时间的格式,比如%d{yyyy-MM-dd HH:mm:ss},pattern必须为“java.text.SimpleDateFormat”类可兼容的格式。

4、%F、%file:输出发生日志请求的java源文件名,产生文件名信息不是特别的快,有一定的性能损耗,除非对执行速度不敏感否则应该避免使用此选项。(比如输出:TestMain.java,默认异常栈中会输出类名)

5、%caller{depth}、%caller{depthStart..depthEnd}:输出产生日志事件的调用者位置信息,{depth}为可选项;位置信息依赖于JVM实现,不过通常会包含调用方法的全限定名、文件名和行号。

假如:TestMain.java中main()-->test1()-->test2(),在test2方法中触发日志事件,假如%caller{3}将会输出

6、%L、%line:输出发生日志请求的源文件行号,产生行号信息不是非常的快速,有一定的性能损耗,除非对执行速度不敏感否则应该避免使用此选项。(默认异常栈中会输出行号)


7、%m、%msg、%message:在日志中输出应用提供的message。


    比如:LOGGER.error("message",exception),输出“message”和exception栈。


8、%M、%method:输出发出日志记录请求的方法名称,产生方法名不是特别快速。


9、%n:输出一个行分隔符,即换行符。(取决于运行平台,可能是“\n”,"\r\n")


10、%p、%le、%level:输出日志事件的level。


11、%t、%thread:输出产生日志事件的线程名称。


12、%ex{depth}、%exception{depth}:输出日志事件相关的异常栈,默认会输出异常的全跟踪栈。(%m会包含此部分)


13、%nopex:输出日志数据,但是忽略exception。

 

 

posted @ 2019-04-08 14:44  李东平|一线码农  阅读(282)  评论(0编辑  收藏  举报