如何让Log4j2在Wildfly 8.2中运行

时间:2016-04-12 21:30:12

标签: wildfly slf4j log4j2

我正在通过log4j2(版本2.5)使用slf4j作为部署到Wildfly 8.2服务器的耳朵应用程序(包括ejb和web应用程序)。

父POM 的外观如下:

<dependencyManagement>
    <dependencies>
        <!-- SLF4J -->
        <dependency> 
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j-version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-bom</artifactId>
            <version>${log4j2-version}</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
        ...
    </dependencies>
</dependencyManagement>

模块&#39; pom.xml 是:

<dependencies>
    <dependency> 
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
    </dependency>
    ...
</dependencies>

然后我将 log4j2.xml 放入耳朵的META-INF文件夹

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG">  
    <Appenders>  
       <File name="FileLogger" fileName="app-simple.log">  
          <PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{3} - %m%n"/>  
       </File>  
    </Appenders>  
    <Loggers>  
       <Root level="DEBUG">  
          <AppenderRef ref="FileLogger"/>  
       </Root>  
    </Loggers>  
</Configuration>

在所有这些和部署的应用程序之后,没有发生任何事情,没有错误,也没有生成日志文件,

我认为Wildfly日志记录子系统可能会干扰它。所以我在META-INF文件夹中添加了 jboss-deployment-structure.xml 来排除Wildfly的日志记录

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <exclude-subsystems>
            <subsystem name="logging"/>
        </exclude-subsystems>
    </deployment>
</jboss-deployment-structure>

然后我收到以下错误。

15:07:20,648 ERROR [stderr] (MSC service thread 1-5) ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.

我确实发现这个post正在讨论相同的错误,基于我认为log4j2版本可能出错的答案,所以我将版本降级到2.0.1,然后它没有&#39;抱怨配置文件,但给出了这个新错误:

16:57:38,456 ERROR [stderr] (MSC service thread 1-5) ERROR StatusLogger Could not search jar file 'C:\Servers\wildfly-8.2.0.Final\standalone\deployments\test-ear.ear\lib\log4j-core.jar\org\apache\logging\log4j\core' for classes matching criteria: annotated with @Plugin file not found java.io.FileNotFoundException: C:\Servers\wildfly-8.2.0.Final\standalone\deployments\test-ear.ear\lib\log4j-core.jar\org\apache\logging\log4j\core (The system cannot find the path specified)

同样根据这个post,Wildfly中的log4j2可能有问题,所以我试图调整log4j2版本和配置,但没有运气。

那么如何在Wildfly8中设置log4j2,任何人都可以提供帮助。非常感谢。

1 个答案:

答案 0 :(得分:0)

从所有文档中我可以发现EAR的META-INF文件夹不在类路径中,因此Log4j 2不会找到放置在那里的配置文件。我能找到的唯一文档提到必须创建一个可以放置公共配置文件的模块。