log4j2笔记 #01# Architecture
索引
Architecture
Main Components
Log4j使用下图所示的类。

使用Log4j 2 API的应用程序将从LogManager请求具有特定名称的Logger。LogManager将定位适当的LoggerContext,然后从中获取Logger。如果必须创建Logger,它将与LoggerConfig相关联,LoggerConfig包含 a)与Logger相同的名字,b)父包的名字,或 c) root LoggerConfig。LoggerConfig对象是从配置中的Logger声明创建的。LoggerConfig与实际交付LogEvents的Appenders相关联。
Logger Hierarchy
与普通System.out.println相比,任何日志API的第一个也是最重要的优点是:能够禁用某些日志语句,同时允许其他日志语句不受阻碍地打印。这个功能假定日志空间,也就是所有可能日志语句的空间,是根据开发人员选择的一些标准进行分类的。
在Log4j 1.x 里,Logger层次结构是通过Logger之间的关系来维护的。在Log4j 2中,这种关系不再存在。相反,层次结构是在LoggerConfig对象之间的关系中维护的。
Logger和LoggerConfig是命名实体。日志记录器名称区分大小写,它们遵循分层命名规则。
LoggerContext
LoggerContext充当日志系统的锚点。但是,根据具体情况,应用程序中可能有多个活动的LoggerContexts 。有关LoggerContext的更多细节见日志分隔部分。
Configuration
每个LoggerContext都有一个活动的Configuration。Configuration包含所有Appenders、上下文范围的Filters、LoggerConfigs,并包含对StrSubstitutor的引用。在重新配置期间,将存在两个配置对象。一旦所有Logger被重定向到新的Configuration,旧的Configuration将被停止并丢弃。
Logger
如前所述,Logger是通过调用LogManager.getLogger创建的。Logger本身不执行任何直接操作。它只有一个名称,并与LoggerConfig关联。它扩展了AbstractLogger并实现了所需的方法。当配置被修改时,记录器可能与不同的LoggerConfig关联,从而导致它们的行为被修改。
Retrieving Loggers
由于以Logger所属类的名称命名Logger是一种非常常见的习惯用法,因此提供了方便的方法LogManager.getLogger()来自动使用调用类的完全限定类名作为Logger名称。
LoggerConfig
LoggerConfig对象是在日志配置中声明Logger时创建的。LoggerConfig包含一组Filters,LogEvent在传递给任何Appenders之前,必须通过这些Filters。它包含用于处理事件的Appenders的引用。
Log Levels
Log4j 1.x和Logback都有“级别继承”的概念。在Log4j 2中,Logger和LoggerConfigs是两个不同的对象,因此这个概念的实现是不同的。每个Logger引用适当的LoggerConfig,而LoggerConfig又可以引用它的父类,从而达到相同的效果。(PS. 言下之意,概念没有变,只不过实现方式有点不一样罢了)
与Logback不同的是,在ERROR和OFF中间添加了FATAL级别。
Filter
除了根据日志级别自动过滤,如前一节所述,Log4j提供Filters,可以应用在控制传递给任何LoggerConfig之前,控制传递给LoggerConfig后但在调用任何Appenders之前,控制传递给LoggerConfig后但在调用一个特定的Appender之前,以及每一个Appender之中。以一种与防火墙过滤器非常相似的方式,每个过滤器可以返回三个结果之一,Accept, Deny或者Neutral。
虽然事件可能被Filter接受,但事件仍然可能没有被记录。当事件被pre-LoggerConfig Filter接受,但随后被LoggerConfig Filter拒绝或被所有appender拒绝时,就会发生这种情况。
Appender
appender可加性的内容仍然可以参考Logback的。
Layout
类似Logback
StrSubstitutor and StrLookup
StrSubstitutor类和StrLookup接口是从Apache Commons Lang中借来的,然后进行了修改,以支持评估LogEvents。此外,Interpolator类是从Apache Commons Configuration中借来的,以允许StrSubstitutor计算来自多个StrLookups的变量。它也被修改以支持评估LogEvents。它们一起提供了一种机制,允许配置引用来自系统属性、配置文件、ThreadContext映射、LogEvent中的StructuredData的变量。变量可以在处理配置时解析,也可以在处理每个事件时解析(如果组件能够处理的话)。有关更多信息,请参见Lookups 。
log4j2笔记 #01# Architecture的更多相关文章
- 软件测试之loadrunner学习笔记-01事务
loadrunner学习笔记-01事务<转载至网络> 事务又称为Transaction,事务是一个点为了衡量某个action的性能,需要在开始和结束位置插入一个范围,定义这样一个事务. 作 ...
- 《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!
<30天自制操作系统>笔记(01)——hello bitzhuwei's OS! 最初的OS代码 ; hello-os ; TAB=4 ORG 0x7c00 ; 指明程序的装载地址 ; 以 ...
- 《The Linux Command Line》 读书笔记01 基本命令介绍
<The Linux Command Line> 读书笔记01 基本命令介绍 1. What is the Shell? The Shell is a program that takes ...
- PHP 学习笔记 01
例子: 为什么要学PHP 主观原因: 前段时间在学校处理了毕业的一些事情,回到上海后开始了找工作的旅程.意向工作是WPF开发或者ASP.NET 作为后端的WEB开发. 陆陆续续一直在面试,其中有一家公 ...
- 【技能大赛笔记01】Zigbee点对点按键控制程序开发
[技能大赛笔记01]Zigbee点对点按键控制程序开发 --2017年"物联网物联网技术应用与维护"任务五题1(中职组) 1.题目要求 2.工程文件 在比赛中,提供了一个基于Bas ...
- JS自学笔记01
JS自学笔记01 1.开发工具 webstorm 2.js(javascript) 是一门脚本.解释性.动态类型.基于对象的语言 含三个部分: ECMAScript标准–java基本语法 DOM(Do ...
- 《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!【转】
转自:http://www.cnblogs.com/bitzhuwei/p/OS-in-30-days-01-hello-bitzhuwei-OS.html 阅读目录(Content) 最初的OS代码 ...
- ASP.NET Identity 2集成到MVC5项目--笔记01
Identiry2是微软推出的Identity的升级版本,较之上一个版本更加易于扩展,总之更好用.如果需要具体细节.网上具体参考Identity2源代码下载 参考文章 在项目中,是不太想直接把这一堆堆 ...
- C++ GUI Qt4学习笔记01
C++ GUI Qt4学习笔记01 qtc++signalmakefile文档平台 这一章介绍了如何把基本的C++只是与Qt所提供的功能组合起来创建一些简单的图形用户界面应用程序. 引入两个重要概 ...
随机推荐
- Hadoop生态集群hdfs原理(转)
初步掌握HDFS的架构及原理 原文地址:https://www.cnblogs.com/codeOfLife/p/5375120.html 目录 HDFS 是做什么的 HDFS 从何而来 为什么选 ...
- Windows PyCharm永久激活
1.下载 链接: https://pan.baidu.com/s/1LvQozk5lXdyk2p8qgGsr3A 提取码: x1t5 放置到 pycharm安装目录的\bin目录下(位置可随意,只要配 ...
- 梯度下降法(BGD、SGD)、牛顿法、拟牛顿法(DFP、BFGS)、共轭梯度法
一.梯度下降法 梯度:如果函数是一维的变量,则梯度就是导数的方向: 如果是大于一维的,梯度就是在这个点的法向量,并指向数值更高的等值线,这就是为什么求最小值的时候要用负梯度 梯度下降法(Gr ...
- 解读经典面试题for循环console.log
for (var i = 1; i <= 5; i++) { setTimeout(function () { console.log(i) },1000)} 会打印出5个6,这是why 因为 ...
- spring对JDBC的整合支持
参考网址:https://blog.csdn.net/u013821825/article/details/51606171 springMVC,目前用到的jar包 spring IOC 5个包 + ...
- Ubuntu系统添加搜狗输入法
前端开发时有时候要接触到Ubuntu系统,但由于本身没有拼音输入,故需要自己安装搜狗,记录方法如下: 1.安装前先升级资源库并安装输入法依赖包: $sudo apt-get update $sudo ...
- IntelliJ IDEA 2017.3/2018.1 激活
传统的License Server方式已经无法注册IntelliJ IDEA2017.3的版本了. http://idea.lanyus.com,这个网站有破解补丁和注册码两种方式,另外http:// ...
- c#Lock学习笔记
转自 http://www.cnblogs.com/tianma3798/p/6290158.html 参考官网 https://docs.microsoft.com/zh-cn/dotnet/cs ...
- word论文文献引用上标括号
参考 http://jingyan.baidu.com/article/c45ad29c310734051753e20d.html 在插入参考文献引用的尾注时,默认为上标数据且没有中括号.现在要统一加 ...
- Python之words count
要求: 对文件单词进行统计,不区分大小写,并显示单词重复最多的十个单词 思路: 利用字典key,value的特性存单词及其重复的次数 每行进行特殊字符的处理,分离出被特殊字符包含的单词 def mak ...