LogBack日志配置

北城余情 提交于 2020-02-17 05:22:33

程序中记录日志一般有两个目的

  1、故障定位

  2、显示程序运行状态

logback的主要模块

  1、logback-access:与server容器集成,提供通过http来访问日志的功能

  2、logback-classic:是log4j的改良版本,完整的实现了slf4j api可以很方便的更换其他的日志系统

  3、logback-core:为logback-access与logback-classic提供了基础的服务

logback的主要标签

  1、logger:日志的记录器,主要用于存放日志对象,定义日志的类型、级别

  2、appender:指定日志输出的目的地(控制台、文件、远程套接字服务器等)

  3、layout:格式化日志信息的输出

  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <!-- 
  3     当scan为true时,配置文件发生改变,将会被重新加载,默认为true;
  4     scanPeriod 设置 监测配置文件是否有修改时间的时间间隔,如果没有时间单位,默认时间单位为毫秒,当scan为true时,这个属性就生效;
  5     debug 当该属性设置为true时,将会打印出logback内部的日志信息,实时查看logback的运行状态    
  6  -->
  7 <configuration scan = "true"  scanPeriod = "60 seconds"  debug = "false" >
  8 <!-- 定义参数常量 -->
  9     <!-- logback日志级别 TRACE < DEBUG < INFO < WARN < ERROR -->
 10     <property name="log.level" value="debug"></property>
 11     <!-- logback日志保留时间30天 -->
 12     <property name="log.maxHistory" value="30"></property>
 13     <!-- logback日志存储的根路径 , ${catalina.base}里面存储的是tomcat示例的根目录 -->
 14     <property name="log.filePath" value="${catalina.base}/logs/webapps"></property>
 15     <!-- 日志展示的格式 , %d{yyyy-MM-dd HH:mm:ss.SSS}年月日时分秒毫秒,[%thead]标识程序是哪一个线程执行的 , %-5level级别是哪个级别    , %logger{50} - %msg日志相关信息 , %n表示作为换行符 -->
 16     <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thead] %-5level %logger{50} - %msg%n"></property>
 17 
 18 <!-- 定义ConsoleAppender ,输出目的地(控制台)-->
 19     <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
 20         <!-- encoder类似于layout,即将日志信息转换为字符串,又将这些字符串输出到文件里面 -->
 21         <encoder>
 22             <!-- 定义log的输出格式 -->
 23             <pattern>${log.pattern}</pattern>
 24         </encoder>
 25     </appender>
 26     
 27 <!--     定义DebugAppender,输出目的地(rollingFileAppender),文件随着size的增大滚动出新的日志文件,也可以随着时间推移按天或按月生成日志文件 -->
 28     <appender name="debugAppender" class="ch.qos.logback.core.rolling.RollingFileAppender" >
 29         <!-- 文件路径,当(${log.filePath}/debug.log)文件到了一定的数量或者一定的时间之后,就会分裂出子的文件出来(${log.filePath}/debug/debug.%d{yyyy-MM-dd}.log.gz) -->
 30         <file>${log.filePath}/debug.log</file>
 31         <!-- 滚动策略 -->
 32         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
 33             <!-- 文件名称,这个是当(${log.filePath}/debug.log)文件到了一定的数量或者一定的时间之后,就会分裂出子的文件出来(${log.filePath}/debug/debug.%d{yyyy-MM-dd}.log.gz) -->
 34             <fileNamePattern>
 35                 ${log.filePath}/debug/debug.%d{yyyy-MM-dd}.log.gz
 36             </fileNamePattern>
 37             <!-- log.gz文件保存最多数量 -->
 38             <maxHistory>${log.maxHistory}</maxHistory>
 39         </rollingPolicy>
 40         <!-- encoder类似于layout,即将日志信息转换为字符串,又将这些字符串输出到文件里面 -->
 41         <encoder>
 42             <!-- 定义log的输出格式 -->
 43             <pattern>${log.pattern}</pattern>
 44         </encoder>
 45         <!-- 定义过滤器,过滤掉不是debug的那些日志 -->
 46         <filter class="ch.qos.logback.classic.filter.LevelFilter" >
 47             <!-- 级别为debug -->
 48             <level>DEBUG</level>
 49             <!-- 如果是debug级别的日志信息,就记录下来 -->
 50             <onMatch>ACCEPT</onMatch>
 51             <!-- 如果不是debug级别的日志信息,就过滤掉 -->
 52             <onMismatch>DENY</onMismatch>
 53         </filter>
 54     </appender>
 55     
 56     <!--     定义InfoAppender,输出目的地(rollingFileAppender),文件随着size的增大滚动出新的日志文件,也可以随着时间推移按天或按月生成日志文件 -->
 57     <appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender" >
 58         <!-- 文件路径,当(${log.filePath}/info.log)文件到了一定的数量或者一定的时间之后,就会分裂出子的文件出来(${log.filePath}/info/info.%d{yyyy-MM-dd}.log.gz) -->
 59         <file>${log.filePath}/info.log</file>
 60         <!-- 滚动策略 -->
 61         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
 62             <!-- 文件名称,这个是当(${log.filePath}/info.log)文件到了一定的数量或者一定的时间之后,就会分裂出子的文件出来(${log.filePath}/info/info.%d{yyyy-MM-dd}.log.gz) -->
 63             <fileNamePattern>
 64                 ${log.filePath}/info/info.%d{yyyy-MM-dd}.log.gz
 65             </fileNamePattern>
 66             <!-- log.gz文件保存最多数量 -->
 67             <maxHistory>${log.maxHistory}</maxHistory>
 68         </rollingPolicy>
 69         <!-- encoder类似于layout,即将日志信息转换为字符串,又将这些字符串输出到文件里面 -->
 70         <encoder>
 71             <!-- 定义log的输出格式 -->
 72             <pattern>${log.pattern}</pattern>
 73         </encoder>
 74         <!-- 定义过滤器,过滤掉不是debug的那些日志 -->
 75         <filter class="ch.qos.logback.classic.filter.LevelFilter" >
 76             <!-- 级别为debug -->
 77             <level>INFO</level>
 78             <!-- 如果是info级别的日志信息,就记录下来 -->
 79             <onMatch>ACCEPT</onMatch>
 80             <!-- 如果不是info级别的日志信息,就过滤掉 -->
 81             <onMismatch>DENY</onMismatch>
 82         </filter>
 83     </appender>
 84     
 85     <!--     定义ErrorAppender,输出目的地(rollingFileAppender),文件随着size的增大滚动出新的日志文件,也可以随着时间推移按天或按月生成日志文件 -->
 86     <appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender" >
 87         <!-- 文件路径,当(${log.filePath}/error.log)文件到了一定的数量或者一定的时间之后,就会分裂出子的文件出来(${log.filePath}/error/error.%d{yyyy-MM-dd}.log.gz) -->
 88         <file>${log.filePath}/error.log</file>
 89         <!-- 滚动策略 -->
 90         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
 91             <!-- 文件名称,这个是当(${log.filePath}/error.log)文件到了一定的数量或者一定的时间之后,就会分裂出子的文件出来(${log.filePath}/error/error.%d{yyyy-MM-dd}.log.gz) -->
 92             <fileNamePattern>
 93                 ${log.filePath}/error/error.%d{yyyy-MM-dd}.log.gz
 94             </fileNamePattern>
 95             <!-- log.gz文件保存最多数量 -->
 96             <maxHistory>${log.maxHistory}</maxHistory>
 97         </rollingPolicy>
 98         <!-- encoder类似于layout,即将日志信息转换为字符串,又将这些字符串输出到文件里面 -->
 99         <encoder>
100             <!-- 定义log的输出格式 -->
101             <pattern>${log.pattern}</pattern>
102         </encoder>
103         <!-- 定义过滤器,过滤掉不是debug的那些日志 -->
104         <filter class="ch.qos.logback.classic.filter.LevelFilter" >
105             <!-- 级别为debug -->
106             <level>ERROR</level>
107             <!-- 如果是error级别的日志信息,就记录下来 -->
108             <onMatch>ACCEPT</onMatch>
109             <!-- 如果不是error级别的日志信息,就过滤掉 -->
110             <onMismatch>DENY</onMismatch>
111         </filter>
112     </appender>
113     
114     <!-- logger,主要存放日志对象,同时告诉logback要关注哪个package下面的信息 
115         name属性指定关注的哪个包,level属性告诉logback记录哪个level以上的信息
116         additivity属性,如果为true,那么就会将root标签中的appender-ref加入到logger标签中来,并且level的级别为logger标签中指定的level
117     -->
118     <logger name="com.imooc.o2o"  level="${log.level}" additivity="true" >
119         <!-- logger需要跟appender绑定的,logger对象会往这三个文件中输出信息 -->
120         <appender-ref ref="debugAppender"></appender-ref>
121         <appender-ref ref="infoAppender"></appender-ref>
122         <appender-ref ref="errorAppender"></appender-ref>
123     </logger>
124     
125     <!-- root是一个特殊的logger,是根logger,需要注意的是,如果上面的logger标签中没有指定level,那么logger就会默认的继承root中的level属性 -->
126     <root level="info">
127         <!-- 只要跟root相关的日志信息都会打印到控制台上面 -->
128         <appender-ref ref="consoleAppender" ></appender-ref>
129     </root>
130     
131 </configuration>

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!