【发布时间】:2017-04-02 11:07:05
【问题描述】:
我们这样写了一个简单的类:
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 错误 [stderr] (ServerService 线程池 -- 58) log4j:WARN 找不到记录器 (com.test.ContactFormScheduler) 的附加程序。
15:35:27,143 ERROR [stderr] (ServerService Thread Pool -- 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>
其他类正确记录。
谢谢 安德烈亚
【问题讨论】:
-
你用什么来配置log4j?
-
我用配置编辑了我的问题
-
@StartupEJB 在应用程序初始化期间被调用。我假设 Wildfly 在应用程序初始化(部署)阶段没有初始化 Log4J,所以这就是你收到错误的原因。 -
好的。所以我应该尝试将 LOG4J 初始化放在 EJB 之前。有什么提示吗?
标签: java log4j singleton wildfly startup