我正在尝试了解以下log4j.xml文件:
---Item 1
<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: %c - %m%n" />
</layout>
</appender>
----Item 2
<!-- Application Loggers -->
<logger name="com.somepackagename">
<level value="info" />
</logger>
--Item 4
<logger name="org.hibernate.validator">
<level value="debug" />
</logger>
---Item 5
<!-- Root Logger -->
<root>
<priority value="warn" />
<appender-ref ref="console" />
</root>
</log4j:configuration>
有人可以解释每个项目的作用吗?
答案 0 :(得分:1)
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: %c - %m%n" />
</layout>
</appender>
Appender负责将LogEvents传递到目的地。 appender的名称是“console”,这是用于在配置文件的其余部分中引用appender的名称。用于appender的类是org.apache.log4j.ConsoleAppender。
控制台appender定义了一个param元素。查看ConsoleAppender的javadoc,setTarget方法用于选择要将消息打印到System.out或System.err的控制台流。这个配置appender使用System.out。
控制台appender还定义了一个使用org.apache.log4j.PatternLayout的布局元素。查看PatternLayout的javadoc,setConversionPattern方法接受一个描述消息布局的字符串。此格式的详细信息也可以在javadoc中找到。
然后你有三个记录器:
记录器元素必须具有name属性。这是创建Logger实例时使用的记录器的名称(通常是完全限定的类名,在本例中为com.somepackagename)。
<!-- Application Loggers -->
<logger name="com.somepackagename">
<level value="info" />
</logger>
<logger name="org.hibernate.validator">
<level value="debug" />
</logger>
您需要配置的最重要的记录器是根记录器。根记录器配置为将“debug”或更高级别的日志消息输出到名为“console”的appender。
<!-- Root Logger -->
<root>
<priority value="warn" />
<appender-ref ref="console" />
</root>
有关log4j优先级值的更多信息: log4j logging hierarchy order