为什么我们需要 log4j.xml 中的根和记录器



如果问题太琐碎,请原谅。我是 log4j 的新手。我看到有两个标签和标签,它们指的是各种附加器。假设我想将代码库中的信息记录在一个文件中,将其发送到我的电子邮件并将其打印到控制台。我希望级别设置为信息。拥有一个引用三个附加器的标签还不够吗?(文件,电子邮件和控制台)为什么我们需要另一个相同的?

这就够了。

在 log4j 中,记录器与包相关联,有时与特定类相关联。 记录器的包/类由属性"name"定义。记录器将消息记录在其包中,也记录在所有子包及其类中。唯一的例外是记录应用程序中所有类的消息的根记录器。

记录器还具有级别,并且可能附加了一个或多个追加器(日志记录目标)。

在下一个示例中,我们有两个记录器:

  • 根记录器,用于将所有包中具有 INFO 或更高级别的消息记录到各个目标:控制台、电子邮件和文件,
  • "com.foo"记录
  • 器,用于将包"com.foo"中具有警告或更高级别的消息及其子包记录到另一个文件中。
<log4j:configuration>
    <!-- Declaration of appenders FILE, MAIL, CONSOLE and ANOTHERFILE -->
    ...
    <!-- -->
    <logger name="com.foo">
        <level value="warn"/>
        <appender-ref ref="ANOTHERFILE" /> 
    </logger>
    <root> 
        <priority value ="info" />
        <appender-ref ref="FILE" /> 
        <appender-ref ref="MAIL" />
        <appender-ref ref="CONSOLE" /> 
    </root>
</log4j:configuration>

您应该阅读有关log4j基础知识的更多信息。

最新更新