Log4j 警告:即使存在也没有找到 appender

Log4j warning: no appenders found even if it is there

我的项目在 spring 中,对于日志配置,我使用的是 log4j。我面临的问题是,在站点服务器

中启动 wildfly 时,我得到以下 warning
18:06:42,630 ERROR [stderr] (MSC service thread 1-7) log4j:WARN No appenders could be found for logger (org.jboss.logging).
18:06:42,630 ERROR [stderr] (MSC service thread 1-7) log4j:WARN Please initialize the log4j system properly.
18:06:42,630 ERROR [stderr] (MSC service thread 1-7) log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

但是 log4j2.xml 文件在 project.war/WEB-INF/classes/ 目录中。 我无法在我的本地或我们的服务器中模拟这个问题,因为相同的 war 工作正常,没有任何问题。

共享两个地方的 java 版本。

本地:

openjdk version "1.8.0_222-ea"
OpenJDK Runtime Environment (build 1.8.0_222-ea-b03)
OpenJDK 64-Bit Server VM (build 25.222-b03, mixed mode)

站点:

openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)

分享log4j2.xml供大家参考

<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="60">
  <Properties>
    <Property name="log-path">D:\Server\apache-tomcat-9.0.12\logs\</Property>
    <Property name="archive">${log-path}\archive\</Property>
  </Properties>
  <Appenders>
    <Console name="Console-Appender" target="SYSTEM_OUT">
        <PatternLayout>
            <pattern>
                [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} (%F:%L) %X{TransactionId} - %msg%n
            </pattern>>
        </PatternLayout>
    </Console>
    <File name="File-Appender" fileName="${log-path}/data.log" >
        <PatternLayout>
            <pattern>
                [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} (%F:%L) %X{TransactionId}  - %msg%n
            </pattern>
        </PatternLayout>
    </File>
        <RollingFile name="RollingFile-Appender"
                 fileName="${log-path}/data_back.log"
                 filePattern="${archive}/data.log.%d{yyyy-MM-dd-hh-mm}.gz">
        <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] (%F:%L) %X{TransactionId} - %msg%n"/>
            <Policies>
                 <TimeBasedTriggeringPolicy/>
                 <SizeBasedTriggeringPolicy size="30 MB"/>
            </Policies>
                 <DefaultRolloverStrategy max="30"/>
    </RollingFile>
</Appenders>
<Loggers>

       <Logger name="com.project" level="debug" additivity="false">
           <AppenderRef ref="File-Appender" level="debug"/>
           <AppenderRef ref="RollingFile-Appender" level="debug"/>
           <AppenderRef ref="Console-Appender" level="debug"/>
       </Logger> 
       <Logger name="com.project" level="debug" additivity="false">
           <AppenderRef ref="File-Appender" level="debug"/>
           <AppenderRef ref="RollingFile-Appender" level="debug"/>
           <AppenderRef ref="Console-Appender" level="debug"/>
       </Logger> 
        <Logger name="org.springframework" level="info" additivity="false">
           <AppenderRef ref="File-Appender" level="debug"/>
           <AppenderRef ref="RollingFile-Appender" level="debug"/>
           <AppenderRef ref="Console-Appender" level="debug"/>
       </Logger> 
       <Logger name="org.hibernate" level="info" additivity="false">
           <AppenderRef ref="File-Appender" level="debug"/>
           <AppenderRef ref="RollingFile-Appender" level="debug"/>
           <AppenderRef ref="Console-Appender" level="debug"/>
       </Logger>

    <Root level="info">
        <AppenderRef ref="Console-Appender"/>
    </Root>
 </Loggers>
</Configuration>

请帮我解决这个问题。 谢谢

我正在根据您在下方的评论更新此答案。

log4j:warn 消息来自 Log4j 1.x。它告诉你它找不到任何配置。您显示的配置适用于 Log4j 2。

如果您打算同时使用 Log4j 1 和 Log4j 2,那么您必须为两者提供有效的配置。不要尝试登录到相同的文件。在这种情况下,您不应该使用 log4j-1.2-api.2.10.jar,因为它会替换 log4j-1.2.17.jar.

如果您只想使用 Log4j 2,则删除 log4j 1.2.17 jar 并保留 Log4j-1.2-api-2.10.0.jar 来自 Log4j 2。您还应该使用log4j-slf4j-impl-2.10.0.jar 而不是 slf4j-log4j12-1.7.25.jar。如果存在公共日志记录,那么您应该使用 log4j-jcl-2.10.0.jar。