关闭

logback学习笔记

标签: 日志logback
236人阅读 评论(0) 收藏 举报
分类:

日志级别

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

<?xml version="1.0" encoding="UTF-8"?>
<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">
        <!-- 输出到文件,只处理>=ERROR级别的日志 -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <!-- 每天形成一个文件,最多保留七天 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>./logs/fs-open-hr-admin-%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
            <maxHistory>30</maxHistory>
            <!-- 文件>100M时,触发警告 -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy/MM/dd-HH:mm:ss.SSS}-[%level]-[%X{requestId}]-%logger{10}:%line-%msg%n</pattern>
        </encoder>
    </appender>
    <!-- 捕获由com.fishweb包下产生的,且级别>=Debug的日志记录,不向上级传播 --》
    <logger name="com.fishweb" level="DEBUG" additivity="false">
        <appender-ref ref="FILE" />
        <appender-ref ref="STDOUT"/>
    </logger>

    <root level="INFO">
        <appender-ref ref="FILE"/>
    </root>

</configuration>
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:18011次
    • 积分:571
    • 等级:
    • 排名:千里之外
    • 原创:44篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论