欢迎访问宙启技术站
智能推送

如何理解Log4j配置文件中代码的含义

发布时间:2023-05-16 15:22:39

Log4j是Java中广泛使用的日志记录工具。其中的配置文件可以定义日志记录的位置、格式、级别、过滤等更详细的信息。在Log4j配置文件中,不同的代码有不同的含义。

首先,配置文件中的格式和注释是非常重要的,可以帮助在需要存档、修改或调试时更快地找出问题。配置文件中的 行通常是注释行,指定文件的名称和版本。如:

<!-- Log4j Configuration File- version 1.2.15 -->

然后,我们会看到一些属性定义,如下:

# Define the logging level for some of the categories
log4j.logger.com.packageA=WARN, A

这里,log4j.logger.com.packageA=WARN, A将验证log4j:

- 创建一个名为“com.packageA”的分类(类别),并将其日志级别定义为WARN。

- 此分类将使用附加器A(这是在此处命名的另一个元素)生成日志消息。

接下来,在不同的标签中,定义了各种不同的元素。这些元素可以包括:

### appenders

附加器(appenders)是日志记录中的一个非常有用的元素。附加器是用来记录我们想要存储日志的目标,一个附加器可以将日志记录到多个目的地。

例如:

<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
   <param name="Target" value="System.out"/>
   <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%d{ISO8601} %5p %c:%L - %m%n"/>
   </layout>
</appender>

上述代码定义了一个附加器的名称("stdout"),使用 ConsoleAppender 类的实例记录消息到 System.out 中。该附加器没有设置过滤器、错误手柄,它使用了日志事务提交的默认配置。

### layouts

日志记录器的布局(layout)对日志的消息进行格式化和排列。一个 layout 定义了一种方式来呈现日志消息。例如:

<layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="%d{ISO8601} %5p %c:%L - %m%n"/>
</layout>

这里,我们使用官方的 PatternLayout 类(而非自定义类)来定义日志消息的格式。该类包括以下线程安全格式化器——您可以为所在的应用程序开发自己的左对齐或右对齐轴线、打印日志线程 ID、甚至可以自定义日期输出格式。

既然我们定义了附加器,我们希望将其与生成的日志记录器联系起来。这可以通过日志员的配置来实现:

<logger name="com.packageA" additivity="false">
   <level value="WARN"/>
   <appender-ref ref="A"/>
</logger>

这里我们还是利用com.packageA分类,不同之处在于 additivity 属性的值被设置为“false”,表示com.packageA不会接收其先申明的父分类中类别的日志信息,而是接收其自己的日志信息。

所有的这些组件都需要存储在一个插件中。如:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">
  <appender name="A1" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%p %t %c - %m%n"/>
    </layout>
  </appender>
  <logger name="org.apache.logging.log4j.adapter" additivity="false">
    <appender-ref ref="A1"/>
  </logger>
  <root>
    <level value="info"/>
    <appender-ref ref="A1"/>
  </root>
</log4j:configuration>

这些例子涵盖了Log4j配置文件中最常见的元素和属性。这些元素可以确保我们能够通过配置文件指示日志记录器进行记录的方式。同时,我们也可以指示属性、布局、附加器、过滤器和异常处理器等元素生成如何配置的记录。