Herausfinden der ParentClass aber Wie?

mrno

Erfahrenes Mitglied
Hi,
ich habe mal wieder eine Frage ob dieses Möglich ist. Ich bin gerade dabei ein Status Logger zu schreiben. Ich habe mir vorgestellt das ich bei Aufruf der Methode
Code:
class Test{
 public void test1(){
  MyLogg.addLog("testlogg"); 
 }
}


folgendendes auf der Konsole ausgegeben wird.
HTML:
Class:Test - Method:test1 - Line: 3 - Logmessage: testlogg

Ist dieses Möglich über die Methode addLog von der Klasse MyLogg herauszufinden von welcher Klasse es aufgerufen wurde und auch von welcher Methode? Line wäre schön muss aber nicht unbediengt sein. Ist das irgendwie hinterlegt. Gibt es da eine Funktion. Es würde auf jedenfall meine Arbeit erleichtern, da ich nicht jedes mal diese Werte mitübergeben muss.

Hoffe Ihr könnt mir helfen.
 
Zuletzt bearbeitet:
Hallo,

schau mal hier:
Java:
/**
 * 
 */
package de.tutorials;

/**
 * @author Thomas.Darimont
 *
 */
public class StackTraceExample {

    /**
     * @param args
     */
    public static void main(String[] args) {
        a();
    }

    private static void a() {
        b();
    }

    private static void b() {
        c();
    }

    private static void c() {
        log("bubu");
    }

    private static void log(String message) {
        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
        //Skipping 0 / 1 elements because it is the Thread.getStacktrace() / log-method
        
        StackTraceElement stackTraceElement = stackTrace[2];
        
        System.out.println(stackTraceElement.getClassName() + " Method: " + stackTraceElement.getMethodName() + " Line: " +stackTraceElement.getLineNumber() + " " + message);
    }

}

Ausgabe:
Code:
de.tutorials.StackTraceExample Method: c Line: 28 bubu

Gruß Tom
 
Danke für die Anleitung hat funktioniert. log4j kenn ich. Kann aber leider nicht dass was ich will. Der Logger soll eine Server und einen Client haben. Client soll eine Lib sein die überall eingebunden werden kann. Client und Server kommunizieren über TCP/IP dadurch kann ich irgendwo anders ein Programm mitloggen. Auserdem möchte ich die Möglichkeit haben Die Ausgabe in eine Datei zu schreiben. Aber es hat ja funktioniert. Danke nochmal.
 
Das kann log4j doch soweit ich weiß alles. In ne Datei schreiben sowieso. Aber es gibt auch SocketAppender auf die man sich von außen connecten kann. Guck dir das mal näher an.
 
Zurück