log4j Logger详解

log4j中logger元素定义一个日志输出器,指定logger的设置,additivity指示是否遵循缺省机制。常见的有两种:Root和Logger。

1. Root

name [#REQUIRED attribute] : 定义logger的名字,以便被后文引用

additivity [#ENUM attribute] : 取值为"true"(默认)或者"false",是否继承父logger的属性

level [? child] : 定义该logger的日志级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.

appender-ref [* child] : Root的子节点,用来指定该日志输出到哪个Appender,通过ref指定.

2. Logger

Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。

level:Logger属性,日志输出级别,共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.

name:Logger属性,用来指定该Logger所适用的类或者类所在的包全路径,继承自Root节点.

additivity:Logger属性

appender-ref:Logger的子节点,用来指定该日志输出到哪个Appender,如果没有指定,就会默认继承自Root.如果指定了,那么会在指定的这个Appender和Root的Appender中都会输出,此时我们可以设置Logger的additivity="false"只在自定义的Appender中进行输出。

Log日志级别

共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.

All:最低等级的,用于打开所有日志记录.

Trace:是追踪,就是程序推进以下,你就可以写个trace输出,所以trace应该会特别多,不过没关系,我们可以设置最低日志级别不让他输出.

Debug:指出细粒度信息事件对调试应用程序是非常有帮助的.

Info:消息在粗粒度级别上突出强调应用程序的运行过程.

Warn:输出警告及warn以下级别的日志.

Error:输出错误信息日志.

Fatal:输出每个严重的错误事件将会导致应用程序的退出的日志.

OFF:最高等级的,用于关闭所有日志记录.

实例

<loggers>
      <!--默认的root的logger-->
      <root level="DEBUG">
            <appender-ref ref="Console"/>
            <appender-ref ref="RollingFileInfo"/>
            <appender-ref ref="RollingFileWarn"/>
            <appender-ref ref="RollingFileError"/>
            <appender-ref ref="RollingFileDebug"/>
      </root>
      <!--额外配置的logger-->
      <!--记录druid-sql的记录-->
      <logger name="druid.sql.Statement" level="debug" additivity="false">
            <appender-ref ref="druidSqlRollingFile"/>
      </logger>
      <!--log4j2 自带过滤日志-->
      <Logger name="org.apache.catalina.startup.DigesterFactory" level="error" />
      <Logger name="org.apache.catalina.util.LifecycleBase" level="error" />
      <Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" />
      <logger name="org.apache.sshd.common.util.SecurityUtils" level="warn"/>
      <Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" />
      <Logger name="org.crsh.plugin" level="warn" />
      <logger name="org.crsh.ssh" level="warn"/>
      <Logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="error" />
      <Logger name="org.hibernate.validator.internal.util.Version" level="warn" />
      <logger name="org.springframework.boot.actuate.autoconfigure.CrshAutoConfiguration" level="warn"/>
      <logger name="org.springframework.boot.actuate.endpoint.jmx" level="warn"/>
      <logger name="org.thymeleaf" level="warn"/>
</loggers>

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。