zoukankan      html  css  js  c++  java
  • Logback常用配置详解

    logback是一套日志框架,由log4j的优化版,由同一个作者开发,在速度和性能上都超过其他日志框架,再结合slf4j,已成为当前最流行的日志框架。

    Logback最常用就是在classpath定义一个lockback.xml配置文件,从而对日志进行配置输出。

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <configuration debug="false" scan="true" scanPeriod="1 seconds">
     3 
     4     <contextName>logback</contextName>
     5 
     6     <property name="log.path" value="F:\logback.log" />
     7 
     8     <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
     9         <!-- <filter class="com.example.logback.filter.MyFilter" /> -->
    10         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
    11               <level>ERROR</level>
    12         </filter>
    13         <encoder>
    14             <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n
    15             </pattern>
    16         </encoder>
    17     </appender>
    18 
    19     <appender name="file"
    20         class="ch.qos.logback.core.rolling.RollingFileAppender">
    21         <file>${log.path}</file>
    22         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    23             <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
    24         </rollingPolicy>
    25 
    26         <encoder>
    27             <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
    28             </pattern>
    29         </encoder>
    30     </appender>
    31 
    32     <root level="debug">
    33         <appender-ref ref="console" />
    34         <appender-ref ref="file" />
    35     </root>
    36 
    37     <logger name="com.example.logback" level="warn" />
    38 
    39 </configuration>

    上面就是一个常用的日志配置模版,下面就从跟节点来解析每个节点

    1. 根节点configuration,有以下属性

      a. scan,当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。

      b. scanPeriod,设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。

      c. debug,当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。

    2. contextName ,设置日志上下文名称,可以通过%contextName来打印日志上下文名称

    3. property可以用来设置变量,可以通过${name}来访问,有以下的属性

      a. name,用于${name}访问的key

      b. value,用于${name}访问的value

      c. file ,用于指定配置文件的路径,他的作用在于,如果你有多个配置信息的话,可以直接写在配置文件中,然后通过file引入

        <property file="src/main/java/chapters/configuration/variables.properties" />

        variables.properties如下

                

    1 log.path=F:\demo
    2 log.name=mylog.log

        然后就直接通过${log.path}就可以访问其值

      d.resource作用和file一样,但是,它是可以直接从classpath路径下引入配置文件

         

         4、appender格式化日志输出节点,有俩个属性name和class,class用来指定哪种输出策略,常用就是控制台输出策略和文件输出策略。

    appender有以下子节点:

      a. filter,日志输出拦截器,可以自定义拦截器也可以用系统一些定义好的拦截器

     1 /**
     2 * 日志输出拦截器
     3 * @author liuxg
     4 * @date 2016年4月28日 下午3:36:23
     5 */
     6 public class MyFilter extends Filter<ILoggingEvent> {
     7 
     8 @Override
     9 public FilterReply decide(ILoggingEvent event) {
    10 
    11     if (event.getMessage().contains("sample")) {
    12         return FilterReply.ACCEPT; //允许输入串
    13     } else {
    14         return FilterReply.DENY; //不允许输出
    15     }
    16 }

      它可以提供最大的自定义输出,如果需要用到系统定义的拦截器,例如我们用ThresholdFilter来过滤掉ERROR级别以下的日志不输出到文件中

      

    <filter   class="ch.qos.logback.classic.filter.ThresholdFilter">
    <level>ERROR</level>
    </filter>

      

      b. encoder和pattern节点组合用于具体输出的日志格式

      c. file节点用来指明日志文件的输出位置,可以是绝对路径也可以是相对路径

      d. rollingPolicy日志回滚策略,在这里我们用了TimeBasedRollingPolicy,基于时间的回滚策略,有以下子节点

        fileNamePattern,必要节点,可以用来设置指定时间的日志归档,例如我们上面的例子是每天将日志归档成一个zip包

        maxHistory ,可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件,,例如设置为30的话,则30天之后,旧的日志就会被删除

        totalSizeCap,可选节点,用来指定日志文件的上限大小,例如设置为3GB的话,那么到了这个值,就会删除旧的日志

        除了用TimeBasedRollingPolicy策略,我们还可以用SizeAndTimeBasedRollingPolicy,配置子节点的maxFileSize来指定单个日志文件的大小

     1 <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
     2 <file>mylog.txt</file>
     3 <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
     4   <!-- 每天一归档 -->
     5   <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
     6    <!-- 单个日志文件最多 100MB, 60天的日志周期,最大不能超过20GB -->
     7    <maxFileSize>100MB</maxFileSize>    
     8    <maxHistory>60</maxHistory>
     9    <totalSizeCap>20GB</totalSizeCap>
    10 </rollingPolicy>
    11 <encoder>
    12   <pattern>%msg%n</pattern>
    13 </encoder>
    14 </appender>

      5、 root节点,必选节点,用来指定最基础的日志输出级别,他有俩个自己点可以用来应用appender,格式化日志输出

    1  <root level="debug">
    2  <appender-ref ref="console" />
    3 3<appender-ref ref="file" />
    4  </root>

      6、logger节点,可选节点,用来具体指明包的日志输出级别,它将会覆盖root的输出级别

    1 <logger name="com.example.logback" level="warn" />
  • 相关阅读:
    SVN安装
    清楚OpenGL代码中的列主矩阵和行主矩阵
    UVA-122(Trees on the level)
    POJ
    POJ-1797(Heavy Transportation)
    POJ
    POJ
    最短路经---SPFA算法
    POJ
    HDU
  • 原文地址:https://www.cnblogs.com/dixinyunpan/p/6140975.html
Copyright © 2011-2022 走看看