单例,启动和log4j初始化:找不到记录器的appender

时间:2016-11-18 14:40:39

标签: java log4j singleton wildfly startup

我们写了这样一个简单的类:

import org.apache.log4j.Logger;
[...]
@Singleton
@Startup
public class ContactFormScheduler {

private static final Logger log = Logger.getLogger(ContactFormScheduler.class); 

[...]

当我们启动服务器(WildFly 10.1.0)时,我们收到以下错误:

15:35:27,142 ERROR [stderr](ServerService线程池 - 58)log4j:警告找不到logger(com.test.ContactFormScheduler)的appender。

15:35:27,143 ERROR [stderr](ServerService线程池 - 58)log4j:WARN请正确初始化log4j系统。

任何提示?什么是初始化log4j的最佳方法?

在web.xml中:

<context-param>
    <param-name>log4j-config-location</param-name>
    <param-value>/WEB-INF/log4j.properties</param-value> 
</context-param>

在jboss-deployment-structure.xml

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
    <!-- Exclusions allow you to prevent the server from automatically adding some dependencies -->
    <exclusions>
        <module name="org.apache.log4j" />
    </exclusions>
</deployment>
</jboss-deployment-structure>

其他类正确记录。

由于 安德烈

1 个答案:

答案 0 :(得分:0)

如果您将log4j排除在WAR/lib目录中,请移除jboss-deployment-structure.xml并将log4j.properties移至WAR/WEB-INF/classes WildFly,自动为您的部署配置log4j。

如果您更愿意使用自己的log4j版本,则仍需要将log4j.properties移至WAR/WEB-INF/classes目录,因为log4j无法从{{1}中读取任何内容}目录。