2016-11-18 7 views
0

Мы написали простой класс, как это:Singleton, запуск и log4j инициализации: Нет appenders не может быть найдено для регистратора

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: 27142 ERROR Pool [STDERR] (ServerService Thread - 58) log4j: не WARN нет appenders может быть найдено для регистратора (com.test.ContactFormScheduler).

15: 35: 27,143 ОШИБКА [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-развертывания-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> 

Другие классы журналы правильно.

Благодаря Andrea

+0

Что вы используете для настройки log4j? –

+0

Я отредактировал мой вопрос с настройкой – pacionet

+0

'@ Startup' EJB вызывается во время инициализации приложения. Я предполагаю, что Wildfly не инициализировал Log4J во время стадии инициализации (развертывания) приложения, поэтому вы получаете ошибку. –

ответ

0

Если исключить log4j от того, в вашем WAR/lib директории, удалите jboss-deployment-structure.xml и переместите log4j.properties в WAR/WEB-INF/classes WildFly автоматически настроить log4j для развертывания.

Если вы не хотите использовать свою собственную версию log4j вы все еще нужно, чтобы переместить log4j.properties в WAR/WEB-INF/classes каталог как log4j не сможет ничего из каталога WAR/WEB-INF читать.

+0

Другие функции регистрации звонков прекрасны. Я думаю, что проблема связана с порядком загрузки log4j и singleton. Если я положил log = Logger.getLogger (ContactFormScheduler.class); «после» в исполнении он работает – pacionet