logback学习笔记

日志级别

Trace < Debug < Info < Warn < Error.

Configuration节点


  • 属性
    • scan:若为true,则监听配置文件变化,变化后重新加载
    • scanPeriod:监听变化的周期,单位为毫秒。
  • 子节点
    • logger:用来设置某一个包或者具体的某一个类的日志打印级别以及指定
    • root:一个特殊的logger,当一条日志没有被其他logger捕获或者其他logger捕获后向上传递,那么root可以捕获该日志。
    • appender:指定日志的输出格式,输出位置,进一步过滤日志级别。

logger节点


  • 属性
    • name:包名/类名,eg:com.fishweb。只有日志是在该范围下打印的,才会被logger捕获。
    • level:过滤日志级别,只有>=该级别的日志,才会调用Appender输出。默认继承root.level,为debug。
    • addtivity,是否向上级(root)传递该日志,默认为true。
  • 子节点
    • appender-ref:对捕获后的日志进行处理,可设置多个。

root节点


  • 属性:只有level属性
  • 子节点:appender-ref

appender节点


  • 属性
    • name:唯一id,在appender-ref中被引用。
    • class:指定输出类,也是输出方式,常用ch.qos.logback.core.ConsoleAppender(控制台)与ch.qos.logback.core.rolling.RollingFileAppender(滚动文件)
  • 子节点
    • filter:过滤器,对日志进一步过滤,只有通过所有过滤器的日志,才会真正被处理。
    • encoder:指定输出格式以及对二进制进行转换。

选定为ConsoleAppender时,appender无其他子节点。

选定为RollingFileAppender时,appender的子节点如下:

  • append,是否追加到文件末尾(否则覆盖),默认为true.
  • rollingPolicy,刷新策略,该节点属性如下
    • class:滚动实现类,常用ch.qos.logback.core.rolling.TimeBasedRollingPolicy。
    • FileNamePattern(TimeBasedRollingPolicy):文件名,必须含有%d{format},其中format为日期格式,与simpledateformat同。它指定了最小的时间单位,如%d{yyyy/MM/dd} -> 时间单位为天,每天产生一个文件;%d{yyyy/MM} -> 时间单位为月,每月产生一个文件。
    • maxHistory:最多保存的周期数(天/月/..)

encoder节点


子节点为pattern,指定了输出格式,eg:
[%d{yyyy/MM/dd-HH:mm:ss.SSS}]-[%level]-[%thread]-[%X{requestId}]-[%class:%line]- %msg%n

filter节点


主要使用LevelFilter以及ThresholdFilter,由class属性指定。
* LevelFilter。
* level指定匹配的级别,单个匹配,而不是范围匹配。
* onMatch:符合时操作,可以选择抛弃日志等操作。
* onMisMatch;不符合时操作。
* ThresholdFilter。
* level,只有>=该level的日志被处理。

日志记录过程


日志产生 -> loggers -> [root] -> filters -> appender处理

DEMO


<configuration>
    
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>[%d{yyyy/MM/dd-HH:mm:ss.SSS}]-[%level]-[%thread]-[%X{requestId}]-[%class:%line]- %msg%n pattern>
        encoder>
    appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERRORlevel>
        filter>
        
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>./logs/fs-open-hr-admin-%d{yyyy-MM-dd}.%i.log.gzFileNamePattern>
            <maxHistory>30maxHistory>
            
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MBmaxFileSize>
            timeBasedFileNamingAndTriggeringPolicy>
        rollingPolicy>
        <encoder>
            <pattern>%d{yyyy/MM/dd-HH:mm:ss.SSS}-[%level]-[%X{requestId}]-%logger{10}:%line-%msg%npattern>
        encoder>
    appender>
    
                    

你可能感兴趣的:(old)