为什么我们需要log4j.xml中的root和logger

时间:2012-10-12 14:20:41

标签: log4j

如果问题太琐碎,请原谅。我对log4j完全不熟悉。我已经看到有两个标签和标签,它们指的是各种appender。 假设我想将我的代码库中的信息记录在一个文件中,将其发送到我的电子邮件并将其打印到控制台。我希望级别设置为info。是不是只有一个标签可以引用三个appender?(文件,电子邮件和控制台)为什么我们需要另一个?

1 个答案:

答案 0 :(得分:34)

这就够了。

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

记录器也有级别,并且可能附加了一个或多个appender(记录目标)。

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

  • 根记录程序,将所有程序包中INFO级别或以上级别的邮件记录到各个目的地:控制台,电子邮件和文件,
  • “com.foo”记录程序,将“com.foo”包中的级别为WARN或以上的消息及其子包记录到另一个文件中。

    <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>
    

你应该read more关于log4j的基础知识。