log4j.Eigenschaften ignoriert
Ich habe ein Java-EE-6 Wicket-Anwendung bereitgestellt, mit maven-Verwendung von IntelliJ IDEA 9.0.3 auf glassfish v3.0.1. Ich benutze slf4j-log4j12-1.5.6 mit slf4j-api-1.5.8 und log4j-1.2.16 für die Protokollierung.
Bisher war es gut, wenn ich bereitgestellt, über netbeans oder eclipse, aber wenn ich die Implementierung mit IntelliJ IDEA meine log4j.Eigenschaften-Datei ignoriert und glassfish logging behandelt meine log-Meldungen. Ich glaube nicht, dass die IDEE etwas zu tun, etwas anderes verändert haben muß ich kann einfach nicht herausfinden, was.
Habe ich geprüft, dass meine log4j.Eigenschaften-Datei ist in mein WEB-INF/classes-Verzeichnis und die slf4j/log4j jars in WEB-INF/lib-Verzeichnis von mein Krieg. Gibt es irgendeine Art von Konfiguration, die ich bin fehlt, um diese Arbeit zu machen?
Dank.
edit: Aktualisiert, mit mehr Infos, veröffentlicht pom Abhängigkeiten.
Hier ist der entsprechende Abschnitt aus meiner pom.xml:
<!-- Guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>r05</version>
</dependency>
<!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.glassfish.extras</groupId>
<artifactId>glassfish-embedded-all</artifactId>
<version>3.0</version>
<scope>test</scope>
</dependency>
<!-- Java EE 6 -->
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>bean-validator</artifactId>
<version>3.0-JBoss-4.0.0.Beta3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
<!-- Wicket -->
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket</artifactId>
<version>1.4.9</version>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-auth-roles</artifactId>
<version>1.4.9</version>
</dependency>
<dependency>
<groupId>org.jboss.weld</groupId>
<artifactId>weld-wicket</artifactId>
<version>1.0.1-Final</version>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.5.1-Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.5.1-Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>3.2.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.5.1-Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>3.5.1-Final</version>
</dependency>
<!-- Database -->
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>8.4-701.jdbc4</version>
</dependency>
<!-- Logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
</dependencies>
Ich set-Dlog4j.debug in der gfv3 jvm-Einstellungen aber es wurde prompt ignoriert.
Was bedeutet System.getProperty("log4j.defaultinitoverride") zurück?
InformationsquelleAutor kgrad | 2010-08-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Update: ich habe versucht das Problem zu reproduzieren. Habe ich eine einfache Wicket-Projekt (gleiche version wie du):
Das eine einfache log4j.Eigenschaften der Protokollierung auf die standard-Ausgabe.
Dann:
repositories
undpluginRepositories
javax.servlet
Abhängigkeit, um die build-passembedded-glassfish
plugin zum testen der ganzen Sacheslf4j-api
imdependencyManagement
element zu Steuern schön die version in transitiven Abhängigkeiten.Den vollen pom.xml sieht so aus: (also kann jemand reproduzieren):
Und wenn ich das Projekt mit dem embedded-glassfish-plugin:
und Zugang http://localhost:8080/server in einem browser, bekomme ich meine Protokolle in die standard-Ausgabe wie erwartet:
Ich Frage mich, ob das repräsentativ ist oder nicht.
slf4j-log4j12.jar ist nicht ein Ersatz für log4j.jar, slf4j-log4j12.jar ist ein Bindung für log4J version 1.2, die Sie noch brauchen log4j.jar. Aus der SLF4J-Dokumentation:
Ich Frage mich, wie Sie diese arbeiten unter NetBeans und Eclipse.
Thivent - Nur um ganz sicher zu sein lief ich wieder unter netbeans und es ist nicht mehr die Protokollierung richtig da, das macht Sinn, ich habe keine Ahnung, warum es plötzlich nicht mehr mit meinem log4j-Konfiguration... Vielleicht habe ich noch eine Abhängigkeit, die Konflikte? Würde einfügen mein pom überhaupt helfen?
Buchen Sie Ihr pom würde zumindest helfen, überprüfen Sie die Abhängigkeiten.
Thivent: gebucht.
Thivent: ich habe meinen logger code zum einbinden org.apache.log4j.Logger und Logger.getLogger() zu testen, was passiert war. Nun meine Datei-appender eine Datei erstellt, aber die Datei ist leer und die server-log ist immer noch mit glassfish - logger. Glassfish zu sein scheint-hijacking meine logger-Instanz seine eigene irgendwie. Ich weiß, dass es atleast liest meine config als Datei wird nun erstellt, obwohl leer...
InformationsquelleAutor Pascal Thivent
Ich hatte genau das gleiche problem.
Log4j allein großen Werke:
Aber wenn ich versuche, mit Slf4j über Sie, dann meine "src/resources/log4j.properties" - Datei wird nicht mehr gefunden, auch wenn Maven hinzufügen, um ein Verzeichnis, das ist auf dem classpath.
So, das funktioniert nicht out of the box:
Machen, damit es funktioniert, müssen Sie explizit hinzufügen "log4j.Eigenschaften" des classpath oder dem server mitteilen, wo es zu finden ist! Ein Weg dies zu erreichen ist (in diesem Beispiel Windows):
In Eclipse (wenn es das ist was Sie verwenden), können Sie die gleiche Zeile in der Run Configuration /VM-Argumente.
InformationsquelleAutor electrotype
Hatte ich die gleichen Probleme. Die Lösung ist einfach - alle logging Abhängigkeiten sollte vor der glassfish auf dem classpath.
Beachten Sie, dass ältere Maven2-Versionen haben einige Probleme mit dem Klassenpfad Konsistenz. Ich benutze 2.2.1 die haben das Problem behoben (es wurde behoben, 2.0.9, denke ich).
InformationsquelleAutor dmatej
Ich schlage vor, entfernen Sie alle slf4j Abhängigkeiten und ändern Sie Ihre logging-code zu verwenden, der Log4j-API direkt (wenn das nicht zu viel Arbeit ist, weiß nicht, die Größe Ihres Projekts). Sobald dies funktioniert, betrachten Sie, wenn Sie wirklich brauchen, die Flexibilität, die slf4j. Wenn Sie dies tun, wählen Sie die richtige version von slf4j (slf4j-log4j12 vielleicht nicht das richtige für log4j 1.2.16) und integrieren Sie es wieder an.
Traf ich slf4j vor kurzem, und am Ende entfernt zusammen, weil ich lief in ähnliche Probleme bei der Konfiguration.
InformationsquelleAutor Adriaan Koster
Haben Sie einen Blick auf die log4j manual. Der Abschnitt "Default-Initialisierung-Prozedur" beschrieben, wie log4j wird versuchen zu finden, der Initialisierungsdatei. Vielleicht können Sie versuchen, einige dieser Optionen, um die Dinge funktionieren.
InformationsquelleAutor FrVaBe
Die zwei wahrscheinlichsten Dinge, dass der Frühling in den Sinn:
Da funktioniert es in einigen Bereitstellungsszenarien, ich vermute, Ihr Krieg Verpackung beim laufen über Maven ist das problem. Die oben aufgeführten Punkte sollen Ihnen helfen, die dies bestätigen.
Wenn ich will, Reproduzierbarkeit, die ich ausführen von maven von der Befehlszeile aus und manuell implementieren Sie die war-Dateien. Vielleicht sollten Sie versuchen, diese, und auch zu vergleichen war-Dateien, die so erstellt mit war-Dateien erstellt/bereitgestellt durch die jeweiligen IDEs.
C - I bereitgestellt, die den Krieg über die Kommandozeile und server überprüft.log und immer noch nicht sehen, log4j richtig funktioniert, noch ist meine Datei-appender arbeiten.
nur für den Fall, Sie nicht haben, haben Sie sich für den Fehler in der Start-Ausgabe? Ich habe gesehen, Fehler versteckt sich in der Masse der app-server-Start in die Vergangenheit. Auch könnte es sich lohnen, dumping der classpath aus einer Klasse-oder JSP-Code in Ihre Bereitstellung, die bestätigen sollten, was Gläser, die Sie Zugriff haben.
haben Sie überprüft, dass die log4j.jar die Datei ist in der war-Datei, wie @jowierun Euch gesagt?
InformationsquelleAutor Paul Jowett
Habe ich Folgendes logging Abhängigkeiten :
unter /src/main/resources/ich habe ein logback.xml die Definition der verschiedenen Aspekte (appenders,..). Dies wird abgeholt von maven und kopiert Sie in WEB-INF/classes
hoffe, dass geholfen
InformationsquelleAutor bert
Ich würde Unterstützung Adriaan Koster ' s Antwort. Wenn Ihr pure log4j nicht funktioniert, versuchen Sie jedoch, die folgenden. Erstellen Sie einfach Klasse, wie diese
...und setzen Haltepunkt in org.apache.log4j.Helferinnen und Helfer.Loader#getResource-Methode. Er versucht zu ziehen log4j.xml vom classloader:
So können Sie ganz einfach sehen Sie in den classloader und sehen, welche Wege es nutzt (und warum kann es nicht finden log4j.xml).
InformationsquelleAutor Denis Kniazhev
Ist es auch sehr wichtig, dass die log4j-Bibliothek kompiliert wurde, nachdem alle Module von den Bibliotheken im Projekt verwendet werden. Wenn Sie nicht legen Sie es als letztes Objekt, die Protokolle aus den späteren Modulen/Bibliotheken wäre nicht angezeigt, die in einem standard-Weg für log4j.Eigenschaften.
InformationsquelleAutor Michał Rowicki