Log4j 2 - 停用流口水记录器

Log4j 2 - Deactivate drools logger

我正在使用 Log4j 2 and I am unsuccessfully trying to change the logging level of jBPM/Drools, having it as a reference. The drools class that keeps logging is ExtensibleXmlParser

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <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="debug">
            <AppenderRef ref="Console" />
        </Root>
        <Logger name="org.drools.core.xml.ExtensibleXmlParser" level="off">
            <AppenderRef ref="Console" />
        </Logger>
    </Loggers>
</Configuration>

如果我没记错,ExtensibleXmlParser 使用 slf4j 并且 Log4j 与 sl4j 兼容。

为什么这个 Log4j 配置不起作用?有人可以为我提供工作配置吗?我应该单独配置 jBPM/Drools 记录器吗?

当 log4j 似乎忽略了您对 log4j.properties/xml 文件的调整时,这通常意味着您没有摆弄正确的文件。您的 class 路径中可能存在另一个配置文件,该文件较早被发现并被考虑在内。

在整个 class 路径中搜索 log4j* 模式并查看结果(包括 .jar 文件和应用程序服务器 /lib 和 /ext 文件夹的内容,如果有的话)。

If I get it right, ExtensibleXmlParser uses slf4j and Log4j is compatible with sl4j.

"Is compatible" 不等同于 "is configured to use"。 SLF4J 通过 org.slf4j.impl.StaticLoggerBinder class 插入适当的日志框架。搜索 class 路径(最好在您的 IDE 中)以查看此 class 附带的库。如果没有这样的 class,则 SLF4J 不会记录任何内容。