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所提供的功能组合起来创建一些简单的图形用户界面应用程序. 引入两个重要概 ...
随机推荐
- abap form格式的异常处理
1: form 中有异常时,需要用 raising 将异常抛出. *&------------------------------------------------------------- ...
- 236A
#include <stdio.h> #include <string.h> int main() { char str[150]; int arr[35]; memset(s ...
- Go cookie
Web状态,对于我们从c/c++转过来的人来说还是很重视的啊 但,如何用好cookie来让我心顺畅,目前还是有点障碍 可能是我没能完全理解cookie 但是,如果由浏览器客户端决定自己绑定那个cook ...
- 查看Andorid应用是32位还是64位
adb shell cat /proc/进程pid/maps 查看linker位数即可
- iOS - (多图上传已封装)
/*** 上传带图片的内容,允许多张图片上传(URL)POST** @param url 网络请求地址* @param images ...
- fang99-三号线与四号线新盘
三号线与四号线新盘 http://www.fang99.com/buycenter/buildingsearch_map.aspx?projectid=0000011104 http://www.fa ...
- html5-字体css
#div1{font-size: 50px;}#div2{font-size: 50%;}#div3{font-size: 300%}#div4{font-size: 3em;}#div5{font- ...
- 概念、DW介绍
网页设计知识点大致分为五个部分,分别是: 1.概念.DW介绍: 2.标签: 3.样式表CSS: 4.JQuery: 5.JavaScript 概念.DW介绍: 一.网页的基本结构 <!--文档声 ...
- mvc未登录跳转到登录界面
编写一个mvc控制器基类BaseController , 其继承自controller 重写其OnActionExecuting方法, 在其中检测session值,如果没有,则跳转至登录页面. 如下
- 【Hbase学习之二】Hbase 搭建
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-3.1.1 hbase-2.1.3 一.单机模 ...