zoukankan      html  css  js  c++  java
  • LogBack.xml文件配置

    Logback-spring.xml配置文件 

    1、日志级别:日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,例如:如果设置为WARN,则低于WARN的信息都不会输出

    2、根节点:configuration

      configuration 有三个可选属性:

        a、scan属性:用来设置配置文件变动时是否重新加载,值是truefalse,默认是true即配置变动时重新加载

        b、scanperiod属性:用来设置每隔多久检查一次配置是否变动,默认是1分钟,默认单位是毫秒

        c、debug属性:用来设置是否将logback内部的日志打印出来,即启动时输出配置加载信息。值为truefalse 默认为false

    3、property节点:

      设置要使用的或者共用的变量,property包含两个属性name和value;其中name的值是变量的名称,value的值是变量所代表的值。

           <property>定义的值可以使用“${变量名}”到logger上下文中。

    4、springProperty节点

           该标签的工作方式类似于Logback的标准<property>标签。但是,value您无需指定direct,而是指定source属性的(来自Environment)。

           如果需要将属性存储在local范围之外的其他位置,则可以使用该scope属性。

           如果需要后备值(如果未在中设置属性Environment),则可以使用defaultValue属性。

    5.appender节点

          appender节点可以有多个,分别针对不同的包或者类做不同的输出,

          如果appender输出到文件时,可以设置append子节点值true/false,是末尾追加日志还是替换日志,值为true时表示追加。

          可以在appender中使用filter节点(过滤器),在此节点内过滤日志级别(使用level节点指定),过滤后会返回一个枚举值,

          即DENY,NEUTRAL,ACCEPT其中之一:

          A、返回DENY,日志将立即被抛弃不再经过其他过滤器;

          B、返回NEUTRAL,有序列表里的下个过滤器接着处理日志;

          C、返回ACCEPT,日志会被立即处理,不再经过剩余过滤器

       如果需要使用这些值做处理时,需要使用onMatch(level级别或大于level级别的)和onMismatch(级别小于level级别的)

    6、logger节点

         用来设置某一个包或者具体的某一个类的日志打印级别、以及指定appender。logger仅有一个name属性和两个可选的level、addtivity属性。

                Name属性:用来指定受此logger约束的某一个包或者具体的某一个类。

                Level属性:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR

         如果未设置此属性,那么当前logger将会继承上级的级别。

         Addtivity属性:用来设置是否向上级logger传递打印信息。默认是true。

         logger可以包含零个或多个appender-ref元素,标识这个appender将会添加到这个logger

    7、root节点

         也是<logger>元素,但是它是根logger。只有一个level属性,因为已经被命名为"root".

              level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR。默认是DEBUG。

         root可以包含零个或多个appender-ref元素,标识这个appender将会添加到这个logger

    8、pattern节点定义的输出模式解释

              %d{HH:mm:ss.SSS}  当前时间;

              [%thread]  [当前线程名称]

              %-5level  logger级别

              %logger{36} logger名称

             -%msg%n  定义的输出

              %line  输出日志的行号

              %n  换行

              %date和%d{yyyy-MM-dd HH:mm:ss.SSS}  当前时间包含年月日

              {%C.java:%L}  输出日志所在的java类、所在行及路径可以替换[%thread]

    9、appender下的filter的常见种类

       在logback中,过滤器可以添加到Appender上。通过添加一个或多个过滤器到Appender,你可以通过任意条件,

               比如:日志内容、MDC内容、时间等等日志的任何部分,过滤日志事件。

    级别过滤器

      级别过滤器(LevelFilter)是基于准确匹配日志级别。如果日志级别等于配置的级别,过滤器通过配置中的OnMatch与OnMismatch属性决定是接受还是拒绝事件。

    阀值过滤器

      阀值过滤器(ThresholdFilter)过滤低于指定阀值的事件。当事件中的日志级别大于等于指定阀值时,过滤器的decide方法返回NEUTRAL。然而,拒绝日志级别小于阀值的事件。

     条件过滤器

      条件过滤器(EvaluatorFilter)是一种封装了EventEvaluator的通过过滤器。像名字代表的,条件过滤器是根据判断事件是否符合指定条件来分别返回OnMatch与OnMismatch属性里的值。

    注意:EventEvaluator是一个抽象类,通过继承它,你可以实现你自己的条件逻辑。

    附上配置文件模板:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <configuration debug="false" scan="false">
        <property name="LOG_ROOT" value="你的日志的根路径"></property>
        <property name="LOG_PATH" value="日志路径"/>
    
    
        <springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue="你的项目名"/>
        <property name="log.path" value="${LOG_ROOT}/${LOG_PATH}/${spring.application.name}"/>
        <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>%d{MM-dd HH:mm:ss.SSS} %-5level [%logger{50}] - %msg%n</pattern>
            </encoder>
        </appender>
    
    <!-- Log file error output -->
        <!-- 每天生成日志文件,文件大小超过20则新生成一个文件,
        同时将旧文件按${LOG_HOME}/logs/error.%d{yyyy-MM-dd}.%i.log格式保存,文件保存30天 -->
        <appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!-- 正在记录的日志文档的路径及文档名 -->
            <file>${log.path}/info.log</file><!-- 日志名称 -->
            <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 每天日志归档路径以及格式 -->
    <fileNamePattern>${log.path}/%d{yyyy-MM}/info.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
    
    <!-- 日志文件过大会使的编辑器打开非常慢,因此设置日志最大20MB -->
                   <maxFileSize>20MB</maxFileSize>
                   <!--日志文档保留天数-->
                   <maxHistory>30</maxHistory>
                   <cleanHistoryOnStart>true</cleanHistoryOnStart>
    
    <!--        <totalSizeCap>10GB</totalSizeCap>  &lt;!&ndash; 总日志大小 &ndash;&gt;-->
            </rollingPolicy>
            <!-- encoder负责两件事,日志文档输出格式,一是把日志信息转换成字节数组,二是把字节数组写入到输出流 -->
            <encoder>
                <pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
            </encoder>
            <!-- 过滤器,可以过滤掉不符合条件的日志,INFO及以上的日志被处理,其它的拒绝 -->
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>info</level>
            </filter>
        </appender>
    
        <appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${log.path}/debug.log</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <fileNamePattern>${log.path}/%d{yyyy-MM}/debug.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <maxFileSize>20MB</maxFileSize>
                <maxHistory>30</maxHistory>
                <cleanHistoryOnStart>true</cleanHistoryOnStart>
            </rollingPolicy>
            <encoder>
                <pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
            </encoder>
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>debug</level>
            </filter>
        </appender>
    
        <appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${log.path}/error.log</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <fileNamePattern>${log.path}/%d{yyyy-MM}/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <maxFileSize>20MB</maxFileSize>
                <maxHistory>30</maxHistory>
                <cleanHistoryOnStart>true</cleanHistoryOnStart>
            </rollingPolicy>
            <encoder>
                <pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
            </encoder>
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>error</level>
            </filter>
        </appender>
        <logger name="org.springframework" level="INFO"/>
        <logger name="org.springframework.web" level="INFO"/>
        <logger name="org.springframework.beans" level="INFO"/>
        <logger name="org.apache" level="WARN"/>
        <logger name="org.springboot.sample" level="INFO"/>
        <logger name="javax.activation" level="WARN"/>
        <logger name="org.mybatis.spring" level="INFO"/>
    
    
        <!-- Level: FATAL 0  ERROR 3  WARN 4  INFO 6  DEBUG 7 -->
        <root level="INFO">
            <appender-ref ref="console"/>
            <appender-ref ref="debug"/>
            <appender-ref ref="error"/>
            <appender-ref ref="info"/>
        </root>
    </configuration>

     

  • 相关阅读:
    Spring依赖注入servlet会话监听器
    Maven常用命令
    页面获取Spring Security登录用户
    spring security:ajax请求的session超时处理
    前端用Request Payload方式请求后台
    记一次网易前端实习面试【转载】
    JavaScript函数内部修改全局变量的问题【一道面试题】
    Js作用域与作用域链详解
    js测试
    JavaScript 中对变量和函数声明的“提前(hoist)”
  • 原文地址:https://www.cnblogs.com/cndarren/p/11752129.html
Copyright © 2011-2022 走看看