29

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

4

1 回答 1

45

就够了。

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

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

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

  • 根记录器,将所有包中级别为 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>

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

于 2012-10-14T12:08:28.463 回答