logger XML 属性

 

一、LOGGER

1 、logger 是用来设置某一个包或者具体的某一个类的日志打印机级别,以及制定的 appender。 logger 有两种级别:

    一种是 root

    一种是普通的 logger

 

2 、logger 有三个属性:

  • name:用来指定此 logger 约束的某一个包或者具体的某一个类
  • level:用来设置打印级别
  • addtivity:是否向上级 logger 传递打印信息,为true的时候会打印2次以上的日志。默认是 true。

  每个 logger 都有对应的父级关系,它通过包名来决定父级关系,root 是最高级的父元素。

<!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
    <loggers>
        <!--过滤掉spring和hibernate的一些无用的debug信息-->
        <logger name="org.springframework" level="INFO">
        </logger>
        <logger name="org.mybatis" level="INFO">
        </logger>
        <Logger name="com.bycuimiao.demo.log1" level="info" additivity="false">
            <appender-ref ref="Console"/>
            <appender-ref ref="RollingFileInfoForLog1"/>
        </Logger>
        <Logger name="com.bycuimiao.demo.log2" level="info" additivity="true">
            <appender-ref ref="Console"/>
            <appender-ref ref="RollingFileInfoForLog2"/>
        </Logger>
        <root level="all">
            <appender-ref ref="Console"/>
            <appender-ref ref="RollingFileDebug"/>
            <appender-ref ref="RollingFileInfo"/>
            <appender-ref ref="RollingFileWarn"/>
            <appender-ref ref="RollingFileError"/>
        </root>
    </loggers>

 


 

二、Appenders

 Appenders节点,常见的有三种子节点:Console、RollingFile、File.


Console节点用来定义输出到控制台的Appender.

  name:指定Appender的名字.

        target:SYSTEM_OUT 或 SYSTEM_ERR,一般只设置默认:SYSTEM_OUT.

        PatternLayout:输出格式,不设置默认为:%m%n.

 <!--这个输出控制台的配置-->
        <console name="Console" target="SYSTEM_OUT">
            <!--输出日志的格式-->
            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
        </console>

 

 File节点用来定义输出到指定位置的文件的Appender.

        name:指定Appender的名字.

        fileName:指定输出日志的目的文件带全路径的文件名.

        PatternLayout:输出格式,不设置默认为:%m%n.

<!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用-->
        <File name="log" fileName="log/test.log" append="false">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>

 

 


 

RollingFile节点用来定义超过指定大小自动删除旧的创建新的的Appender.

   name:指定Appender的名字.

        fileName:指定输出日志的目的文件带全路径的文件名(日志的文件目录级名称).

        filePattern:指定新建日志文件的名称格式.(超过指定大小或者日期后,存档的文件名称)

   PatternLayout:输出格式,不设置默认为:%m%n.

        Policies:指定滚动日志的策略,就是什么时候进行新建日志文件输出日志.

        TimeBasedTriggeringPolicy:Policies子节点,基于时间的滚动策略,interval属性用来指定多久滚动一次,默认是1 hour。modulate=true用来调整时间:比如现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am...而不是7am.

        SizeBasedTriggeringPolicy:Policies子节点,基于指定文件大小的滚动策略,size属性用来定义每个日志文件的大小.

        DefaultRolloverStrategy:用来指定同一个文件夹下最多有几个日志文件时开始删除最旧的,创建新的(通过max属性)。

 <!-- 这里的日志类似流一样的进入 RollingFileInfo , 然后经过 ThresholdFilter 进行过滤。       
                因为经过ThresholdFilter的时候,如果有匹配项,则直接打印日志了,所以需要把高等级的日志级别放在前面
                并且,onMatch属性设置为DENY,过滤掉高等级的日志;onMismatch设置为NEUTRAL,把低等级的日志放行,
                到我们想要的级别后,onMache设为ACCEPT,获取到日志,并onMismatch设置为DENY,丢弃低等级日志,并执行结束-->
        <RollingFile name="RollingFileALL" fileName="${sys:user.home}/logs/count-dispather/default/info.log"
                     filePattern="${sys:user.home}/logs/count-dispather/default/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
            <Filters>
                   <!--  控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
                <ThresholdFilter level="OFF" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="100 MB"/>
            </Policies>
             <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
            <DefaultRolloverStrategy max="20"/>
        </RollingFile>

 

posted @ 2019-01-29 18:24  Snail90  阅读(1138)  评论(0编辑  收藏  举报