使用 log4j 在 Wildfly 中启用 spring 安全记录

Enable logging of spring security in Wildfly with log4j

我想使用 Log4j 记录与 Spring 安全性 (4.2.16) 相关的任何内容。

这是一个部署在 Wildfly 10.1.0 中的 EAR 文件,log4j.xml 部署到 EAR

中包含的 WAR 文件的 WEB-INF/classes

log4.xml 具有以下类别:

<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
    <param name="Threshold" value="debug" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern"
               value="%d{HH:mm:ss} %p [%t]:%c{3}.%M()%L - %m%n" />
    </layout>
</appender>

<category name="org.springframework.security" additivity="false">
    <priority value="TRACE" />
    <appender-ref ref="STDOUT"/>
</category>

为任何项目 classes 打印日志,但 Log4j 配置不适用于 spring 安全。

调试后,logger.isDebugEnabled() returns AffirmativeBased class

为假

如何获取与 spring 安全相关的日志?

似乎(根据我的测试)第三方依赖项的日志记录(至少,Spring)没有配置在项目的 log4.xml 中,而是在 Wildfly 的日志记录子系统中。

我已将以下行添加到独立-full.xml(在日志子系统定义内)并且它现在正在记录:

<logger category="org.springframework.security">
  <level name="TRACE"/>
  <handlers>
    <handler name="CONSOLE"/>
  </handlers>
</logger>

我没有尝试过,但可能会在 EAR 的 jboss-deployment-structure.xml 中表明该应用程序排除了 Wildfly 自己的日志记录子系统并依赖于所有记录(包括第三方依赖项)到 log4j。参见 Override logging in WildFly