Log4J loggen nicht alles

Ich nahm einfach eine bestehende web-Anwendung bei der Arbeit, soll melden Sie Ihre Aktivität unter Verwendung von Log4J. Ich habe konfiguriert meinem Arbeitsbereich genau, wie mir gesagt wurde, und alles andere (db-Verbindung, Authentifizierung, etc...) funktioniert einwandfrei außer das das nichts wird in die Protokolldatei geschrieben. Andere ähnliche Anwendungen haben keine Probleme bei der Anmeldung.

Ist, habe ich mich an die WebSphere-Konsole beim starten der Anwendung gibt es keine Fehler gibt, die zeigen könnten, warum Log4J ist die Protokollierung nicht.

Erwähnte ich dies zu einem anderen dev (wer arbeitete einst für diese Anwendung, aber nicht für eine Weile und ist noch mehr veraltet, als ich es bin), der meinte, es war sehr seltsam Verhalten, hatte aber keine Ahnung, warum es möglicherweise nicht zu melden und nicht melden Sie etwaige Fehler.

Habe ich Weg über die config Datei und Eigenschaften-Datei und alles sieht OK. Ich vermute, dass Log4J ist nie auch nur das Lesen der log4j.xml aber ich bin mir nicht sicher. Es ist schon eine Weile her, seit ich gearbeitet habe, mit Log4J - hat jemand ein paar gute Tipps, "trouble-shooting" diese Art von problem?

PS: Es gibt Instanzen, die von dieser Anwendung bereitgestellt werden, um verschiedene test - /QS - /prod-Server und diese Instanzen alle log-in Ordnung. Es ist nur auf den lokalen Arbeitsstationen, die Anmeldung scheint im hintergrund fehl.


Update: es scheint also So zu sein, ein problem mit der Art, wie die Anwendung bereitgestellt wird.
Ich habe die classloader-Modus auf "Parent Last" und ich kann sehen, dass die Log4J Datei zumindest Lesen jetzt. Und die erste Aktion, ich Versuch löst eine ClassNotFoundException sagen, dass org.apache.commons.logging.impl.Log4jFactory kann nicht gefunden werden.


2. Update:
Ich habe bemerkt etwas Fremd... Die Anwendung hat zwei KRIEG-Projekte - eines davon ist das UI und die andere ist für einige web-services. Das Projekt, das sich für den UI - ist erfolgreicher Anmeldung Ihre Operationen auf die log-Datei. Der web-service-Projekt ist die eine, die schlägt mit der ClassNotFoundException. Beide haben commons-logging.jar gelistet als Java ee-Modul-Abhängigkeit, und keiner von Ihnen eine Projekt-spezifische logging-Konfiguration (alle config-Dateien in einer Ressourcen-Projekt).

Einen großen Unterschied, ist, dass das UI-Projekt enthält einige andere in-house frameworks (pre-kompiliert als JARs), die könnte enthalten bereits die notwendigen logging-Konfigurationen und vielleicht das ist, wo der Unterschied ist.

Ich auch versucht, die Antwort (eine Datei mit dem Namen org.apache.Unterhaus.die Protokollierung.LogFactory in der META-INF/services mit einer Zeile enthält: "org.apache.Unterhaus.die Protokollierung.impl.Log4jFactory") von dieser Frage: Websphere sind alle logs werde SystemOut.melden aber es schien nicht zu helfen.

Welche Art von logger-Instanz ist es? Wie in RollingFileAppender
Es ist ein FileAppender.
Ich würde anfangen, die Einführung eines Fehlers in der log4j Konfigurationsdatei, so dass es explodiert, während der Initialisierung, nur um zu überprüfen, dass die Datei gelesen wird.
Log4j ist berüchtigt für nicht das Lesen aus der config-Datei, die Sie denken, es ist zu Lesen. (Oder eher, schlecht geschriebene Anwendungen sind berüchtigt für missbräuchlich log4j diese Weise.) Was ich tun würde, ist, platzieren Sie Haltepunkte in der log4j-Konfiguration-Klassen zu sehen, die man aufgerufen wird und wo Sie Lesen.
Excelent! Sie fand eine der schrägsten Quelle von Fehlern WAR. Eine schnelle Lösung wäre, commons-logging-app.

InformationsquelleAutor FrustratedWithFormsDesigner | 2012-06-29

Schreibe einen Kommentar