• logback.xml配置文件解析一


    配置文件主要结构如下:

    <?xml version="1.0" encoding="utf-8"?> 
    <configuration>
    	<appender></appender>
    	<!--looger可以有0个或多个-->
    	<logger></logger>
    	<!--可以有0个或1个-->
    	<root></root>
    </configuration>
    

    1.appender节点(输出源,日志输出类型)

    <appender><configuration>的子节点,是负责写日志的组件。appender有两个必要属性name、class 。name指定appender的名称,class指定appender的全限定名。
    class,主要包括:

    ch.qos.logback.core.ConsoleAppender 控制台输出
    ch.qos.logback.core.FileAppender 文件输出
    ch.qos.logback.core.RollingFileAppender 文件滚动输出
    

    以下对每个类进行分析:

    ConsoleAppender 把日志输出到控制台

    有如下节点:
    <encoder> : 对日志进行格式化。
    <target> : 字符串System.out 或者 System.err, 默认 System.out;

    <configuration>
      <appender name ="console_out" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>%date [%thread] %-5level %logger - %message%newline</pattern>
            </encoder>
      </appender>
    

    FileAppender 把日志添加到文件

    有如下节点:
    <file>:被写入的文件名,可以是相对目录 , 也可以是绝对目录 , 如果目录不存在则会自动创建。
    <append>:如果是true , 日志被追加到文件结尾 , 如果是false,清空现存文件 , 默认是true。
    <encoder>:对日志进行格式化,具体的转换符说明请参见 logback中文网

        <appender name="file_out" class="ch.qos.logback.core.FileAppender">
            <file>logs/debug.log</file>
            <encoder>
                <pattern>%date [%thread] %-5level %logger - %message%newline</pattern>
            </encoder>
        </appender>
    

    rollingFileAppender 滚动记录录文件

    先将日志记录到指定文件,当符合某种条件时,将日志记录到其他文件,有如下节点:

    <file>:被写入的文件名,可以是相对目录,也可以解决目录,如果目录不存在则自动创建。
    <append>:如果是true,日志被追加到文件结尾,如果是false,清空现存文件,默认是true。
    <encoder>:对日志进行格式化。
    <rollingPolicy>:当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名。
    
    rollingPolicy

    TimeBaseRollingPolicy :最常用的滚动策略,根据时间来制定滚动策略,即负责滚动也负责触发滚动。有如下节点;

    <fileNamePattern>:必要节点,包含文件及“%d” 转换符,“%d”可以包含一个java.text.SimpleDateFormat 制定的时间格式,如:%d{yyyy-MM},如果直接使用%d ,默认格式是 yyyy-MM-dd。
    <maxHistory>:可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件,假设设置每个月滚动,且<maxHistory> 是 6,则只保存最近6个月的文件,删除之前的旧文件,注意:删除旧文件是哪些为了归档而创建的目录也会被删除。
    <filenamePattern>:必须包含“%i” 例如:设置最小值,和最大值分别为1和2,命名模式为 log%i.log,会产生归档文件log1.log和log2.log,还可以指定文件压缩选项,例如:log%i.log.gz 或者 log%i.log.zip
    triggeringPolicy:告知RollingFileAppender,激活RollingFileAppender滚动。
    
    <appender name="errorAppender" class="ch.qos.logback.core.RollingFileAppender">
        <file>logs/error.log</file>
        <!-- 设置滚动策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
            <!--设置日志命名模式--> 
            <fileNamePattern>errorFile.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!--最多保留30天log-->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <!-- 超过150MB时,触发滚动策略 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>150</maxFileSize>
        </triggeringPolicy>
        <encoder>
            <pattern>%d [%p] %-5level %logger - %msg%newline</pattern>
        </encoder>
    </appender>
    

    2.logger节点(控制日志输出级别和要打印的路径)

    logger是<configuration>的子节点,来设置某一个包或者具体的某一个类的日志打印级别,以及指定当前这个包或类的输出类型,也就是上边的<appender>标签中的name。logger仅有一个name属性,两个可选属性 level/addtivity。

    • name:用来指定受此loger约束的某一个包或者具体的某一个类,要写全类名。

    • level:用来设置打印级别,大小写无关。可选值有TRACE、DEBUG、INFO、WARN、ERROR、ALL和OFF。还有一个特俗值INHERITED 或者 同义词NULL,代表强制执行上级的级别。如果未设置此属性,那么当前logger将会继承上级的级别。

    • addtivity:是否向上级logger传递打印信息,默认为true,这个上下级就是在name上来区分的,name是java中的包或者全类名;

    • <logger>可以包含零个或多个<appender-ref>元素,表示这个appender将会添加到logger。

    
        <logger name="com.example" level="info">
    	<!--这里的appender-ref中的ref就是指定上边定义的apperder中的name-->
            <appender-ref ref = "console_out"/>
        </logger>
    

    3.root节点(和上边logger一样)

    其实就是<logger name="root"></logger>。该元素有一个level属性,没有name属性,因为已经被命名 为root。Level属性的值大小写无关,其值为下面其中一个字符串:TRACE、DEBUG、INFO、 WARN、ERROR、ALL 和 OFF。如果 root 元素没 有引用任何 appender,就会失去所有 appender。

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

    对于<logger>和<root>的区别,参见logback 配置详解(一)——logger、root

  • 相关阅读:
    Node开发--->10_Node.js_mongoDB增删改查操作
    Node开发--->9_Node.js_数据库概述及环境搭建
    Node开发--->8_Node.js异步编程
    Node开发--->7_服务器端开发
    Node开发--->6_服务器端开发
    Node开发--->5_nodejs中的模块加载机制
    Node开发--->4_package.json文件
    Node开发--->3_node模块化开发之第三方模块
    Node开发--->2_node模块化开发之系统模块
    2015-7-22 积累的力量
  • 原文地址:https://www.cnblogs.com/Lyn4ever/p/11346143.html
Copyright © 2020-2023  润新知