原谅如果问题是太微不足道了。 我完全新的log4j的。 我看到有两个标签和标签,这是指各种附加目的地。 说我要登录我的代码库中的信息文件,将它发送给我的电子邮件,并打印到控制台。 我想设置信息的级别。 不是它足有它有三个附加目的地?(文件,电子邮件和控制台)引用单个标签为什么我们需要另一个用于相同?
Answer 1:
这是不够的。
在log4j的一记录器被用包或有时与特定类别相关联。 包/班记录器是由“name”属性定义。 记录程序记录在其包装,并在所有的子包和他们班的消息。 唯一的例外是根记录器,它记录的消息在应用程序中的所有类。
甲记录器还具有电平,并且可以具有附接到其的一个或多个附加目的地(记录目的地)。
在下面的例子中,我们有两个记录器:
- 根记录器记录与水平INFO或以上的所有包到各个目的地的消息:主机,电子邮件和文件,
“com.foo”记录器记录与级别的消息WARN及以上套餐“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的基础知识。
文章来源: why do we need root and logger in log4j.xml