2016-07-27 53 views
0

Ich versuche Log4j mit Slf4j zu konfigurieren, um unter Weblogic zu laufen und die Protokolle einer Ohr-App mit einem Web-Modul und einem ejb zu verwalten. Während das Webmodul die Nachrichten in der von mir konfigurierten Protokolldatei druckt, tut dies der ejb nicht. Es ist so, als würde der ejb die Konfigurationsdatei nicht sehen und log4j nicht initialisieren.Verwenden von log4j in einem Ohr unter Weblogic 12c

Das Ohr hat diese Struktur:

--APP-INF 
    --LIB 
    --log4j-1.2.17.jar 
    --slf4j-api-1.7.5.jar 
    --slf4j-log4j12-1.7.5.jar 
    --classes 
    --log4j.xml 
--META-INF 
EJB.JAR 
WEB.WAR 

Und die Konfigurationsdatei (log4j.xml) in der APP-INF/classes Ordner des Ohres:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration PUBLIC 
    "-//APACHE//DTD LOG4J 1.2//EN" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd"> 
<log4j:configuration debug="true" 
    xmlns:log4j='http://jakarta.apache.org/log4j/'> 

     <appender name="console" class="org.apache.log4j.ConsoleAppender"> 
      <layout class="org.apache.log4j.PatternLayout"> 
        <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" /> 
      </layout> 
    </appender> 


    <appender name="file" class="org.apache.log4j.RollingFileAppender"> 
     <param name="append" value="false" /> 
     <param name="maxFileSize" value="1000KB" /> 
     <param name="maxBackupIndex" value="5" /> 
     <param name="file" value="/shared_ISILON_WLS/AppLogs/project/project.log" /> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d{dd-MM-yyyy HH:mm:ss} %-5p %c{1}:%L - %m%n" /> 
     </layout> 
    </appender> 

    <appender name="fileSQL" class="org.apache.log4j.RollingFileAppender"> 
     <param name="append" value="false" /> 
     <param name="maxFileSize" value="1000KB" /> 
     <param name="maxBackupIndex" value="5" /> 
     <param name="file" value="/shared_ISILON_WLS/AppLogs/project/project_SQL.log" /> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d{dd-MM-yyyy HH:mm:ss} %-5p %c{1}:%L - %m%n" /> 
     </layout> 
    </appender> 

    <logger name="es.project"> 
     <level value="INFO" /> 
     <appender-ref ref="file" /> 
    </logger> 
     <logger name="org.primefaces"> 
      <level value="INFO" /> 
      <appender-ref ref="file" /> 
     </logger> 
    <logger name="org.eclipse.persistence"> 
      <level value="INFO"/> 
      <appender-ref ref="fileSQL" />  
     </logger> 

</log4j:configuration> 

Aus der Dokumentation und andere Stackoverflow Fragen, die ich überprüft habe, muss die Konfigurationsdatei aus dem EJB-Modul gelesen werden, richtig? Ich habe auch überprüft, dass es keine andere Konfigurationsdatei in den Modulen gibt. Gibt es noch etwas mehr zu konfigurieren, damit das ejb-Modul die Konfigurationsdatei sehen kann?

+0

Konnten Sie das auflösen? Ich habe genau das gleiche Problem. – donlys

+0

Ich konnte dies einfach durch Hinzufügen von com.oracle.foo 'in der ejb weblogic.xml. Hoffe es hilft – xacy

Antwort

0

Sie müssen sicherstellen, dass die Datei log4j.xml im Klassenpfad für das EJB-JAR verfügbar ist. Sie können das Manifest des Glases betrachten, um sicherzustellen, dass es da ist. Sobald es im Klassenpfad vorhanden ist, wird es automatisch geladen.

+0

Ich habe zu manifest.mf des ejb jar hinzugefügt: 'Class-Path: APP-INF/classes/log4j.xml' aber ohne Ergebnis. Es ist sowieso da, um zu debuggen, was mit log4j im ejb passiert? – xacy

0

Das Hinzufügen der Datei log4j.xml im Verzeichnis app.ear/APP-INF/classes funktionierte für mich. Bringst du System raus? Möglicherweise gibt es eine andere log4j.xml auf dem Klassenpfad, die den Logger für org.hiberante und das Schreiben von Log irgendwo anders definiert ...