【Java】log4j2教程

2017-09-30  本文已影响787人  Deeglose

重点

了解log4j2的工作过程和涉及的主要组件
主要配置文件log4j2.xml

工作过程和主要组件

类图

工作过程:log4j2将一次信息的输出定义为一个LogEvent, 这个事件像流水一样具有源头、流经的管道以及终点。

level: log4j2的输出api包括: trace,debug,info,warn,error,fatal 分别对应的是事件的级别:TRACE DEBUG INFO WARN ERROR FATAL
过滤规则是:某个级别的logger只接受某个级别及其以后事件的输出, 比如一个logger的级别为INFO, 则调用logger.debug(), logger.trace()均不能产生输出,而logger.info(),logger.warn(),logger.error(),logger.fatal()均可。

类图的解读:
1.此图应当从Configuration开始看
2.Configuration对应一个配置文件,比如log4j2.xml; 这个文件中配置多个LoogerConfig, Appender,Filter,StrSubstitutor
3.LoggerConfig包含对Logger的配置说明,以及多个Filter的引用
4.Filter对信息进行过滤
5.Appender配置信息接收器
6.Layout决定了信息的输出格式, 比如logger.info("A Message""), 其输出通常是:
2017-09-30 10:28:23.175 [main] INFO fulton.util.java_pc.process.StartIntellijIDE - A Message
除了信息本身以外还包括其他的上下文信息,这就是有Layout配置的

配置文件log4j2.xml

模板:

配置参考

配置和类图的说明是对应的,一个Configuration对应多个Appender, 多个Logger。

Logger的名称、继承体系和获取方式

首先必须了解Logger的命名和层次关系。Logger是有继承关系的,就像Java中的类体系一样,Object是所有的类的超类;同理,在Logger中也存在一个RootLogger,它是所有Logger的父类。Logger之间的继承是通过对名称的设置来隐式实现的,比如一个名为 "com.a"的logger就是"com.a.b"的父logger, 而"com.a"的父Logger就是RootLogger。每个Logger都具有名称,它们在配置文件中的Loggers部分,通过Logger标签的name属性配置,比如:

 <Logger name="com.a" level="trace">
     <AppenderRef ref="Console">
  </Logger>

为了使用Logger,必须从LogManager根据name来获取一个Logger。LogManager提供如下方法:

Logger的使用方法

假设版本号为2.9.1

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class MyClass{
    public static final Logger logger = LogManager.getLogger(MyClass.class);
        public void myMethod()
        {
          logger.info("calling me....");
        }
        ....
}

参考

https://logging.apache.org/log4j/2.0/manual/index.html Apache官方参考文档

上一篇 下一篇

猜你喜欢

热点阅读