首页天道酬勤,

,

张世龙 05-12 10:14 76次浏览

关键点

了解log4j2的工作流程和相关的主要组件

主要配置文件log4j2.xml

工作程序和主要组件

类图

工作过程: log4j2将原始信息输出定义为一个LogEvent,该事件像流水一样具有源头、流动管道和终点。

与源代码中的log.info (、log.error )等调用相对应

管道是过滤器。 通过这些过滤器时,某些日志事件将被过滤。 过滤规则是自定义的,例如,可以过滤包含特殊字符的信息。 当然,过滤由level共同参与决定。

目标是各个Appender,典型的Appender是控制台(System.out )、文件等

level: log4j2的输出api的跟踪、调试、info、warn、error、fatal分别对应于事件的级别:跟踪调试信息warn error fatal

过滤的规则是,某个级别的logger只接收某个级别以后的事件的输出。 例如,如果某级别的logger为INFO,则logger.debug ()、logger.trace、logger.info )或logger.trace )无法生成输出

类图解读:

1 .这张图必须从配置上看

2.Configuration对应于log4j2.xml等配置式。 此文件包含多个LoogerConfig、Appender、Filter和StrSubstitutor

3.LoggerConfig包含Logger的配置说明和对多个过滤器的引用

4 .过滤器过滤信息

5 .应用程序配置信息接收器

6.Layout决定信息的输出格式,例如logger.info(amessage ) ),其输出通常如下。

2017-09-3010336028336023.175 [ main ] info fulton.util.Java _ PC.process.startintellijide-a message

除了信息本身以外,还包含上下文信息。 这有布局配置

配置文件log4j2.xml

模板:

配置参考

部署和类图说明相对应,一个配置对应多个Appender,多个Logger。

Logger的名称、继承体系和检索方法

首先要理解Logger的命名和层次关系。 Logger是继承关系,与Java的类体系一样,Object是所有类的超类,Logger的父类RootLogger也存在于Logger中。 Logger之间的继承是通过名称设置隐式实现的。 例如,名为' com.a '的Logger是' com.a.b '的父Logger,而' com.a '的父Logger是根Logger。 每个Logger都有一个名称,并在配置文件的Loggers部分中使用Logger标记的name属性配置如下:

要使用Logger,必须根据名称从LogManager中检索Logger。 日志管理器提供以下方法:

getRootLogger (

是getlogger(name )

获取配置文件中未配置name的Logger时,默认情况下将创建Logger,并继承根Logger的所有属性。 RootLogger可以在配置文件中设置。

一般来说,每个类都使用logger。 名称是类的完整名称,包括包名称。 因此,日志管理器还提供了一种称为getlogger (类)的简便方法。 这样得到的Logger名称就是当前类名。

如何使用Logger

将版本号设为2.9.1

部署jar包: log4j-core-2.9.1.jar log4j-API-2.9.1.jar

在src目录中创建新的log4j2.xml文件,然后输入配置内容

对于需要打印信息的类,请使用以下模板:

importorg.Apache.logging.log4j.log manager;

importorg.Apache.logging.log4j.logger;

公共类我的类{

publicstaticfinalloggerlogger=log manager.getlogger (my class.class );

公共语音我的方法(

{

Logger.info(callingme…);

}

.

}

参考资料

,