2008-09-15 7 views
2

Ich habe ein großes Ohr, das log4j verwendet und es gibt eine einzige Konfigurationsdatei, die verwendet wird, um es einzurichten. In dieser Konfigurationsdatei werden bestimmte Protokolldateien nicht erwähnt, aber zusätzliche Dateien, die nicht in der Konfigurationsdatei angegeben sind, werden im Ordner logs generiert. Ich habe nach anderen Kombinationen von (logger | log4j | log). (Properties | xml) gesucht und in allen im Ohr enthaltenen jar-Dateien keine vielversprechenden gefunden. Wie finde ich heraus, welcher beleidigende Thread/welche Klasse diese zusätzlichen Dateien erstellt?Datei-Handle aufspüren

+0

Welchen App-Server betreiben Sie? Und welche Dateien werden erstellt? – sblundy

+0

WAS 6.1 und abgesehen von appName- (Fehler | info | debug) .log gibt es error.log und debug.log – shyam

+0

Hmm, könnten Sie Ihren Beitrag mit 'websphere' &' war' markieren. Sehen Sie, ob irgendwelche Experten darin irgendwelche Vorschläge haben. – sblundy

Antwort

3

Versuchen Sie, einen Haltepunkt in den Konstruktoren der Dateiklasse und den Methoden mkdir und createNewFile zu platzieren. Im Allgemeinen wird Code die File-Klasse verwenden, um seine Dateien oder Verzeichnisse zu erstellen. Sie sollten den Java-Quellcode für diese Klassen in Ihrer JVM enthalten haben.

+0

zu nehmen Es dauerte eine Menge Zeit, F8 zu schlagen, aber ich habe es aufgespürt :) thx – shyam

+0

Manchmal ist das der einzige Weg, um es zu tun :) – MetroidFan2002

+1

Shyam, können Sie Verwenden Sie auch bedingten Haltepunkt. Eine Bedingung sieht beispielsweise so aus: this.path.endsWith ("bla") –

0

Formal SysInternals, jetzt von Microsoft Process Explorer http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

"Suchen" Menüpunkt -> "... Handle oder DLL Suchen"

+0

Bereits versucht, dass :(Aber, wenn ich vom Java-Prozess des Anwendungsservers alle Dateien und Verzeichnisse, die ich sehe, sind von denen des Anwendungsservers selbst mein Protokollverzeichnis nicht in diesen. btw ich bin Mit WAS 6.1, aber ich plane, einen tieferen Einblick in procexp – shyam

0

SysInternals kann nicht mit Java-Klasse IO helfen. Versuchen Sie, einen Thread-Dump der JVM (z. B. kill -3) zu erhalten, während in diese Protokolle geschrieben wird. Sie sollten in der Lage sein, einen roten Faden mit java.io-Paketen im oberen Bereich des Stack-Trace abzufangen.

3

Fügen Sie -Dlog4j.debug zur Befehlszeile hinzu, und es wird in der Standardausgabe zusätzliche Informationen darüber geben, wie es konfiguriert ist.