好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

log4j2中文手册.doc

52页
  • 卖家[上传人]:m****
  • 文档编号:509402779
  • 上传时间:2022-11-26
  • 文档格式:DOC
  • 文档大小:2.82MB
  • / 52 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • Log4j2 使用手册一. Log4j2 介绍Log4j1.x 被广泛应用于应用程序,但是近年发展明显放缓,因为要维持较老java 版本的使用,使得log4j1.x的发展更困难而作为其代替品,slf4j/logback做出了许多必要改进,为什么还需要log4j2? 主要有以下几个原因:(1)Log4j2 被设计用作审计日志框架 , log4j和 logback在重载配置时, 都会丢失日志时间, 而 log4j2 不会Logback中 appenders 中的异常对于应用来说是不可见的,log4j2 可以配置异常向应用渗透2)Log4j2 包含基于LMAX Disruptor library 的下一代无锁AsynchronousLoggers ,在多线程环境下,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) Syslog appender 支持 TCP 与 UDP,以及 BSD syslog 和 RFC5424 格式12) Log4j2 得益于 java5 的并发支持,将锁的可能降到最低水平 Log4j1 有已知的死锁问题, Logback 也需要使用 synchronization 来保持在相当高的锁级别13) Apache 开源二. Log4j2 架构1. Log4j2 类图1/51.应用程序调用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 相比于 纯粹的最重要的不同是 : logging API 可以禁用一些 log 语句输出的同时允许其他一些语句块输出这种能力建立在开发者按照一定规则将日志分类的基础上Log4j1.x 的层次关系是通过 Loggers 之间的关系保持的而 Log4j2.x 是通过 LoggerConfig 对象来维持这种层次关系的Loggers与 LoggerConfigs 都是带名称的实体 Logger 名称是大小写敏感的,并且符合如下命名层级规则:一个 LoggerConfig的名字是另外一个LoggerConfig名字加上.和一些后缀字符那么这个LoggerConfig是另外的LoggerConfig 的子类类似于java 的package路径例如 :一个名称为"com.foo" 的LoggerConfig是 一个名称为 "com.foo.Bar"的 LoggerConfig 的父类 类似的, “java ”是 "java.util"的父类和 "java.util.Vector"的祖先类。

      开发人员对这样的命名方案应该很熟悉Root LoggerConfig居于 LoggerConfig分层的顶层 Root LoggerConfig总是存在于每个LoggerConfig的层次中 任何一个与 root LoggerConfig 相关联的 Logger 可以通过如下方式获得:Logger logger=LogManager . getLogger ( LogManager. ROOT_LOGGER_NAME);也可以用如下简便方式:Logger logger = LogManager . getRootLogger ();2/51.其他的 Logger 可以使用 LogManager.getLogger 的静态方法根据传入的名称获得3. LoggerContextLoggerContext 作为日志系统的锚点 (用于根据日志名称定位日志输出信息的 Logger) ,在不同的环境中, 一个应用系统中可能存在多个有效的 LoggerContexts ,4. Configuration每个 LoggerContextLoggerConfigs 与Logger 重定向到新的有一个有效的 Configuration 。

      Configuration 包括所有的包含 StrSubstitutor 的引用信息在配置重载期间,两个Configuration ,旧的 Configuration 将停用和丢弃Appenders Configuration,上下文过滤器,共存,一旦所有的5. LoggerLoggers 是调用 LogManager.getLogger 静态方法创建的 Logger 本身不直接执行动作 它只有一个名称, 并于一个 LoggerConfig 相关联它继承自 AbstractLogger ,当 configuration 被修改时, Loggers 将关联修改后的 LoggerConfig ,从而改变这个 Loggers 的行为获取 Loggers :使用相同的名称调用LogManager.getLogger方法,总是返回完全相同的Logger对象例如:Loggerx= LogManager . getLogger( "wombat");Loggery= LogManager . getLogger( "wombat");X 和 y指向完全相同的Logger 对象。

      Log4j配置环境通常是在应用程序初始化时完成的最好的方式是读取配置文件Log4j很容易通过类名来命名,这可以在每个类初始化的时候完成Logger的初始化, Logger的名称就等于类的完整路径, 这是一个定义 Logger 的简单有效的方式当为日志文件输出具有Logger名称的日志时, 这种命名策略可以很容易看出一个日志消息的来源当然这只是一种比较常见的日志命名方式,log4j 并没有对此进行限制,开发人员可以按照需求进行命名因为使用类名命名 Logger是一个习惯用法一个便利的方法是使用LogManager.getLogger()来获取类的全路径名称的Logger 目前为止,使用类名来作为Logger 的名称是最好的方式6. LoggerConfig当 Logger 对象在 logging configurationFilters 来过滤传递到 Appenders 的中被定义时, LoggerConfig 对象同时被创建LogEvent LoggerConfig 使用一组 AppendersLoggerConfig 包含一组用来处理这些事件Log LevelsLoggerConfigs被分配一个日志级别,包括 :TRACE, DEBUG, INFO, WARN, ERROR, FATAL3/51。

      Log4j 2也.支持自定义日志级别,另一种获得更多日志粒度的方式是使用Markers Log4j1 与 logback 都有日志级别继承的概念在Log4j2中,因为 Loggers和 LoggerConfigs 是 2 个不同的对象,所以这个概念的实现有所不同但是因为每个Loggers 都关联一个相应的Lo。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.