📜  Log4j体系结构

📅  最后修改于: 2021-01-06 09:03:03             🧑  作者: Mango

Log4j架构

Log4j遵循分层体系结构,其中每一层用于提供不同的对象以执行不同的任务。这种分层的体系结构使设计在将来可以轻松灵活地扩展。

log4j框架中有两种可用的对象:

核心对象:核心对象是框架的必需对象。使用该框架需要所有对象。

支持对象:支持对象是框架的可选对象。它们曾经支持核心对象来执行其他但重要的任务。

核心对象

核心对象有以下类型,或者是log4J组件:

记录器:

Logger是提供Logger对象的顶层。 Logger对象负责获取日志信息,它们存储在名称空间层次结构中。

  • 记录器是一个类,可在org.apache.log4j。*中找到。
  • 我们必须为每个Java类创建一个Logger对象
  • Logger组件用于在我们的java类中启用log4j
  • 记录器方法用于在Java类而不是SOPLS中生成日志语句。
  • 为了获得Logger类的对象,我们需要调用静态工厂方法,该方法会将对象作为返回类型
  • 我们必须在类名之后立即创建一个Logger对象。例如:

获取记录器对象:

static Logger log = Logger.getLogger(YourClassName.class.getName())

注意:创建记录器对象时,我们需要传递完全合格的类名或类对象作为参数,其中类表示我们将要使用log4j的当前类。

记录器对象有一些方法。这些方法用于print应用程序的状态:

这些方法是:

  • debug()
  • 信息()
  • 警告()
  • 错误()
  • 致命()

所有这些方法大致相同。这些方法的优先顺序为:调试<信息<警告<错误<致命。

追加者:

追加程序是下层组件,它提供Appender对象。 Appender对象负责将日志记录信息发布到各种首选目标,例如文件,数据库,控制台,Unix Syslog等。

  • 记录器类用于生成不同级别的语句,Appender接收这些日志并将其存储在某些数据库或文件中。
  • Appender不是一个班级。它是一个接口。

在log4j中,我们有不同的Appender实现类:

FileAppender:用于将日志事件附加到文件。它支持另外两个附加器类:

  • RollingFileAppender:扩展FileAppender类以在日志文件达到一定大小时备份它们。
  • DailyRollingFileAppender:扩展FileAppender类,以便以用户选择的频率滚动基础文件。

ConsoleAppender:使用用户指定的布局将日志事件追加到System.err或System.out。默认控制台是System.out。

JDBCAppender:用于数据库。

SMTPAppender:用于在发生特定的日志事件(通常是由于错误或致命错误)时发送电子邮件。

SocketAppender:用于远程存储。

SyslogAppender:将消息发送到远程Syslog域。

TelnetAppender:专门写入只读套接字。

WriterAppender:用于根据用户的选择将日志事件附加到Writer或OutputStream。

布局:

布局层提供了Layout对象,这些对象用于格式化不同样式的日志信息。它用于在发布日志记录信息之前为附加程序对象提供支持。

布局对象在以一种人类可读且可重用的方式发布日志信息中扮演着重要角色。

布局组件定义了附加程序将日志语句写入目标存储库的格式。

log4j中有不同类型的布局类:

  • SimpleLayout:用于以非常简单的方式格式化输出;它会显示“级别”,然后显示破折号“-”,然后显示日志消息。
  • PatternLayout:用于根据指定的转换模式来格式化输出,如果未指定,则考虑默认转换模式。
  • HTMLLayout:将输出格式化为HTML表。
  • XML布局

支持对象

log4j框架中还有其他不同的对象,它们在日志记录框架中起着至关重要的作用:

级别对象:级别对象定义任何日志记录信息的优先级和粒度。 API中定义了七个日志记录级别:OFF,DEBUG,INFO,ERROR,WARN,FATAL和ALL。

过滤器对象:此对象分析日志记录信息,并就是否应该记录该信息做出其他决策。

ObjectRenderer: ObjectRenderer对象专门用于提供传递给日志框架的不同对象的String表示。 Layout对象使用此对象来准备最终的日志记录信息。

LogManager: LogManager对象用于管理日志记录框架。它用于从系统范围的配置文件或配置类中读取初始配置参数。