log4j-配置和级别之间的差异

x8diyxa7  于 2021-07-14  发布在  Java
关注(0)|答案(2)|浏览(309)

有人能解释一下log4j的以下配置是做什么的吗?
我特别混淆了tag configuration=warn和root level=“info”。
如果配置意味着捕获警告消息,为什么是根级别的信息?它们之间有什么关系?
代码段是否将appender控制台分配给根记录器?

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>
mqkwyuun

mqkwyuun1#

彼得的回答是正确的。不过,更详细地说,log4j实际上有log4japi的多个实现。
在api中有simplelogger,它允许在没有日志实现的情况下最小化日志记录。它只允许通过系统属性进行最小配置。
api中还有statuslogger。它还实现了log4japi。log4j实现在内部使用log4japi进行所有诊断日志记录。因为它必须记录自己的启动和配置,所以它使用statuslogger来完成。这个实现与simplelogger有些相似,因为它不是很可配置的。几乎你唯一能控制的就是它是登录到控制台还是文件。
如果您设置status=“off”,那么log4j将永远不会打印任何诊断信息,即使您的配置有误。但是,即使这样,也可以在启动时指定-dlog4j2.debug=true,log4j将发出调试日志。这些在配置出错时非常有用。

ca1c2owp

ca1c2owp2#

这个 status 属性配置 StatusLogger . 这是一个特殊的记录器,位于记录器层次结构之外,它将log4j2框架的内部事件记录到 System.err .
它可能只在调试新的log4j2配置时有用。
这个 level 的属性 <Root> 另一方面,logger配置所有logger的默认级别。

相关问题