为什么我们需要log4j.xml中的root和logger
如果问题太琐碎,请原谅。我对log4j完全陌生。我已经看到有两个标签和标签,它们指的是不同的appender。 假设我想将代码库中的信息记录在一个文件中,将其发送到电子邮件并打印到控制台。我想把级别设置为info。仅仅有一个引用了三个appender(文件、电子邮件和控制台)的标签还不够吗?为什么我们还需要另一个标签呢 这就足够了 在log4j中,记录器与包关联,有时与特定类关联。记录器的包/类由属性“name”定义。记录器将消息记录在其包以及所有子包及其类中。唯一的例外是根记录器,它记录应用程序中所有类的消息 记录器还具有级别,并且可能有一个或多个附加器(日志记录目标)连接到它 在下一个示例中,我们有两个记录器:为什么我们需要log4j.xml中的root和logger,log4j,Log4j,如果问题太琐碎,请原谅。我对log4j完全陌生。我已经看到有两个标签和标签,它们指的是不同的appender。 假设我想将代码库中的信息记录在一个文件中,将其发送到电子邮件并打印到控制台。我想把级别设置为info。仅仅有一个引用了三个appender(文件、电子邮件和控制台)的标签还不够吗?为什么我们还需要另一个标签呢 这就足够了 在log4j中,记录器与包关联,有时与特定类关联。记录器的包/类由属性“name”定义。记录器将消息记录在其包以及所有子包及其类中。唯一的例外是根记录器,它记录应用程
- 根记录器,用于将所有包中级别信息或更高的消息记录到各种目标:控制台、电子邮件和文件
- “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基础。我的意思是,只有一个根标记还不够吗?哪个有三个对appender的引用?根记录器是否也记录“com.foo”classess的消息?@mmc18是的,明确地说。写入appender另一个文件的所有消息也会写入根记录器的appender。请注意,通过将记录器的additivity属性设置为false,可以防止发送到另一个文件的消息被发送到根记录器。将其视为一个例外,从较低的级别向上冒泡(根)。可添加性是指没有“抛出”的“捕获”如何以及在何处引用/使用“logger name=“com.foo”?谢谢。只是一个问题,我们可以将根记录器错误和包级别日志设置为info吗?