77范文网 - 专业文章范例文档资料分享平台

log4j2使用手册@zhangsf

来源:网络收集 时间:2020-04-14 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

Log4j2使用手册

一.Log4j2介绍

Log4j1.x被广泛应用于应用程序,但是近年发展明显放缓,因为要维持较老java版本的使用,使得log4j1.x的发展更困难。而作为其代替品, slf4j/logback做出了许多必要改进,为什么还需要log4j2? 主要有以下几个原因 :

(1) Log4j2被设计用作审计日志框架, log4j和logback在重载配置时,都会丢失日志时间,

而log4j2不会。Logback中appenders中的异常对于应用来说是不可见的,log4j2可以配置异常向应用渗透。

(2) Log4j2 包含基于 LMAX Disruptor library的下一代无锁 Asynchronous Loggers,在多

线程环境下, Asynchronous Loggers相比slf4j/ logback提高了10倍以上的吞吐量,并且有着更低的延时。

(3) Log4j2的插件机制,使得在不需要修改框架的情况下,通过添

加 Appenders, Filters, Layouts, Lookups轻松扩展框架。

(4) 简单的插件配置,无需指定具体类名即可在configuration中配置插件。 (5) 支持自定义日志级别,可以在代码或者 configuration中自定义日志级别。

(6) 支持lambda表达式,java8的应用可以在请求日志级别启用时使用 lambda表达式懒

构建一个日志消息,不需要显示的日志级别检查,使得代码更简洁。

(7) 支持消息对象,消息允许支持有趣和复杂的结构,传递到日志记录系统,并且可以高效

的操作。用户可以自由创建消息类型和编写Layouts, Filters and Lookups来操作这些消息。

(8) Log4j1在Appenders 上支持Filters 。logback增加了TurboFilters ,允许在日志事件

在处理前进行过滤。Log4j2可以配置Filters在Logger后者Appender前运行。 (9) 许多Logback的Appenders不接受Layout,并且只能按照固定格式发送日志数据。大

部分 log4j2接收Layout配置,允许日志数据按照任何所需格式传输。

(10) Log4j1与logback的Layouts是返回一个String类型,这可能导致一些编码问题。Log4j2

使用了简单的方式:返回一个 byte数组。这以为着Layouts可以用在几乎任何appenders,而不仅仅是写入OutputStream。

(11) Syslogappender支持 TCP与UDP,以及BSDsyslog和 RFC5424格式。

(12) Log4j2得益于java5的并发支持,将锁的可能降到最低水平。Log4j1有已知的死锁问

题,Logback也需要使用synchronization来保持在相当高的锁级别。 (13) Apache开源

二.Log4j2架构

1. Log4j2类图

应用程序调用Log4j API时需要向LogManager传入一个特定的名称来获取一个Logger实例。LogManager会定位一个合适的 LoggerContext然后从中获取Logger。如果 Logger必须新建,那么与之关联的 LoggerConfig 遵守如下规则 : (1)与Logger名称完全相同。(2)父Logger的名称。(3)Root LoggerConfig。LoggerConfig 对象是根据configuration 配置中的Logger声明创建的。LoggerConfig又与处理LogEvents的LoggerConfig关联。

2. 日志层次

logging API相比于 纯粹的System.out.println 最重要的不同是 :logging API 可以禁用一些log语句输出的同时允许其他一些语句块输出。这种能力建立在开发者按照一定规则将日志分类的基础上。

Log4j1.x的层次关系是通过 Loggers之间的关系保持的。而 Log4j2.x是通过

LoggerConfig 对象来维持这种层次关系的。

Loggers 与LoggerConfigs 都是带名称的实体。Logger名称是大小写敏感的,并且符合如下命名层级规则:

一个LoggerConfig 的名字是另外一个LoggerConfig名字加上 . 和一些后缀字符。那么这个 LoggerConfig是另外的LoggerConfig的子类。类似于 java的 package路径。例如 : 一个名称为\的LoggerConfig 是一个名称为\的LoggerConfig 的父类。类似的,“java” 是\的父类和\的祖先类。开发人员对这样的命名方案应该很熟悉。

RootLoggerConfig居于LoggerConfig分层的顶层。RootLoggerConfig总是存在于每个LoggerConfig的层次中。任何一个与root LoggerConfig相关联的Logger可以通过如下方式获得:

Logger logger =LogManager.getLogger(LogManager.ROOT_LOGGER_NAME); 也可以用如下简便方式:

Logger logger =LogManager.getRootLogger(); 其他的 Logger可以使用 LogManager.getLogger 的静态方法根据传入的名称获得。

3. LoggerContext

LoggerContext作为日志系统的锚点(用于根据日志名称定位日志输出信息的Logger),在不同的环境中,一个应用系统中可能存在多个有效的 LoggerContexts ,

4. Configuration

每个 LoggerContext 有一个有效的Configuration 。Configuration 包括所有的Appenders,上下文过滤器,LoggerConfigs 与包含StrSubstitutor的引用信息。在配置重载期间,两个Configuration 共存,一旦所有的 Logger重定向到新的Configuration ,旧的Configuration 将停用和丢弃。

5. Logger

Loggers 是调用LogManager.getLogger静态方法创建的。Logger本身不直接执行动作。它只有一个名称,并于一个LoggerConfig相关联。它继承自 AbstractLogger,当 configuration 被修改时,Loggers 将关联修改后的LoggerConfig,从而改变这个Loggers 的行为。

获取Loggers:

使用相同的名称调用 LogManager.getLogger方法,总是返回完全相同的Logger 对象。 例如:

Logger x =LogManager.getLogger(\); Logger y =LogManager.getLogger(\); X和y指向完全相同的 Logger对象。

Log4j配置环境通常是在应用程序初始化时完成的。最好的方式是读取配置文件。

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库log4j2使用手册@zhangsf在线全文阅读。

log4j2使用手册@zhangsf.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/951511.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: