2016-11-18 1 views
0

Wir schrieben eine einfache Klasse wie folgt aus:Singleton, Inbetriebnahme und log4j Initialisierung: Keine Appen für Logger gefunden werden konnte

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

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

[...]

Wenn wir Server (Wildfly 10.1.0 starten) wir haben folgende Fehlermeldung:

15: 35: 27,142 Fehler [stderr] (ServerService Threadpool - 58) log4j: WARN Es konnten keine Appender für den Logger (com.test.ContactFormScheduler) gefunden werden.

15: 35: 27,143 FEHLER [stderr] (ServerService-Thread-Pool - 58) log4j: WARN Bitte initialisieren Sie das log4j-System ordnungsgemäß.

Irgendwelche Hinweise? Was ist der beste Weg, um log4j zu initialisieren?

In web.xml:

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

in 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> 

Andere Klassen protokolliert korrekt.

Dank Andrea

+0

Was verwenden Sie zum Konfigurieren von log4j? –

+0

Ich habe meine Frage mit der Konfiguration – pacionet

+0

'@Startup' bearbeitet. EJB wird während der Initialisierung der Anwendung aufgerufen. Ich gehe davon aus, dass Wildfly Log4J während der Anwendungsinitialisierung (Bereitstellung) nicht initialisiert hat, weshalb Sie den Fehler erhalten. –

Antwort

0

Wenn Sie log4j davon, dass in Ihrem WAR/lib Verzeichnis, entfernen Sie die jboss-deployment-structure.xml und bewegen Sie den log4j.properties zu WAR/WEB-INF/classes Wildfly automatisch konfigurieren log4j für die Bereitstellung auszuschließen.

Wenn Sie lieber Ihre eigene Version von log4j verwenden würden, würden Sie immer noch Ihr log4j.properties zu WAR/WEB-INF/classes Verzeichnis verschieben müssen als log4j nicht alles zu lesen, wäre in der Lage aus dem WAR/WEB-INF Verzeichnis.

+0

Andere Protokoll Anruf funktioniert gut. Ich denke, das Problem hängt mit der Reihenfolge zusammen, in der log4j und singleton geladen werden. Wenn ich log = Logger.getLogger (ContactFormScheduler.class); "nach" in der Ausführung funktioniert es – pacionet

Verwandte Themen