log4j(一)——什么是Log4j以及Log4j的体系结构

一、什么是log4j

几乎每个大型应用程序都包含自己的日志或跟踪API。为了符合这一规则,欧盟SEMPRER项目决定编写自己的跟踪API。这是在1996年初。经过无数次的增强、几个版本和大量的工作之后,API演变成了log4j,这是一个流行的Java日志包。这个包是在Apache Software License下发布的,Apache Software License是由开源组织认证的完全成熟的开源许可证。

在代码中插入日志语句是一种调试代码的低技术方法。它也可能是唯一的方法,因为调试器并不总是可用或适用的。这通常是多线程应用程序和分布式应用程序的情况。

经验表明,日志记录是开发周期的一个重要组成部分。它有几个优点。它提供关于应用程序运行的精确上下文。一旦插入到代码中,日志输出的生成就不需要人为干预了。此外,日志输出可以保存在持久介质中,以便以后研究。除了在开发周期中使用之外,一个足够丰富的日志包也可以被视为审计工具。

正如Brian W. Kernighan和Rob Pike在他们真正优秀的书《编程的实践》中所说:“作为个人选择,除了获得堆栈跟踪或一两个变量的值之外,我们倾向于不使用调试器。一个原因是,它很容易迷失在复杂的数据结构和控制流的细节中;我们发现,与更努力地思考并在关键位置添加输出语句和自检代码相比,逐步执行程序的效率更低。单击语句要比扫描正确放置的显示的输出花费更长的时间。决定在何处放置print语句比单步进入代码的关键部分花费更少的时间,即使我们知道关键部分在哪里。更重要的是,调试语句保留在程序中;调试会话是短暂的。”

日志记录也有其缺点。它会减慢应用程序的速度。如果太啰嗦,可能会导致滚动失明。为了减轻这些问题,log4j被设计成可靠、快速和可扩展的。由于日志记录很少是应用程序的主要关注点,所以log4j API努力使其易于理解和使用。

二、Log4j的体系结构

主要部件

Log4j使用下图所示类:
在这里插入图片描述
使用 Log4j 2 API 的应用程序将从 LogManager 请求具有特定名称的 Logger。 LogManager 将找到适当的 LoggerContext,然后从中获取 Logger。如果必须创建 Logger,它将与 LoggerConfig 关联,该 LoggerConfig 包含
a)与 Logger 相同的名称
b)父程序包的名称
c)根 LoggerConfig。
LoggerConfig 对象是根据配置中的 Logger 声明创建的。 LoggerConfig 与实际提供 LogEvent 的 Appender 关联。

Logger Hierarchy

与普通的System.out.println相比,任何日志API的第一个也是最重要的优点在于它能够禁用某些日志语句,同时允许其他语句不受阻碍地打印。这种功能假设日志空间,即所有可能的日志语句的空间,是根据开发人员选择的一些标准进行分类的。

在Log4j 1.x。通过Logger之间的关系来维护Logger层次结构。
在Log4j 2中,这种关系不再存在。相反,层次结构是在LoggerConfig对象之间的关系中维护的。

Logger和loggerconfig是命名实体。Logger的名称是大小写敏感的,它们遵循分层命名规则:

如果 LoggerConfig 的名称后跟一个点,则该 LoggerConfig 被称为另一个 LoggerConfig 的祖先。
如果 LoggerConfig 与子 LoggerConfig 之间没有祖先,则称该 LoggerConfig 为子 LoggerConfig 的父级。

例如,名为“ com.foo”的 LoggerConfig 是名为“ com.foo.Bar”的 LoggerConfig 的父级。同样,“ java”是“ java.util”的父代,也是“ java.util.Vector”的祖先。大多数开发人员都应该熟悉这种命名方案。

根 LoggerConfig 位于 LoggerConfig 层次结构的顶部。它的特殊之处在于它始终存在,并且是每个层次结构的一部分。直接链接到根 LoggerConfig 的 Logger 可以通过以下方式获得:

Logge
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值