Rückverfolgung eines Aufrufes

  • Themenstarter Themenstarter Tomate_Salat
  • Beginndatum Beginndatum
T

Tomate_Salat

Gast
Hi,
erstmal entschuldigung für den Titel und zweitens entschuldigung für den nachfolgenden Code:
Java:
package org.clazz.a;

public class Out 
{
    private Out()
    {
        
    }
    
    public static void c(String out)
    {           
        try
        {        
            throw new Exception();
        }
        catch(Exception e)
        {
            System.out.println(e.getStackTrace()[e.getStackTrace().length-1].getFileName() + ": " + out);
        }
    }
}

(Der ist zum Test da, wird nicht aktiv verwendet!)

Mir ist klar, dass Exceptions nicht dafür da sind, mir ist auch klar, dass das Beispiel schrecklich ist und so nicht verwendet werden sollte. Mir geht es rein um die Demonstration. Führe ich das Beispiel aus einer Klasse aus, so funktionierte (zumindest im ersten Testlauf) dass so, dass mindestens die Datei aus der der Aufruf stammt mir angezeigt wird + die msg:
[c]Test.java: hallo[/c].
Da ich für mein Programm nebenher eine Console entwickele (entwickelt habe) würde ich diese gerne um die Funktionalität erweitern: von wo kam der Aufruf. Aber ich will dabei nicht bei jeder Consolenausgabe manuell die Klasse dazu schreiben! Vor allem will ich nicht meinen Code durchforsten um das abzuändern.

Also gibt es einen eleganten Weg die Klasse oder Datei (was ich verwenden will, da bin ich mir noch nicht im klaren) herauszufinden in welcher der Aufruf statt gefunden hat?

Mit freundlichen Grüßen

Tomate_Salat
 
ah ok danke, ich hab mir jz mal folgendes zusammengebaut:

Java:
public static void c(String out)
    {           
        StackTraceElement[] elements = Thread.currentThread().getStackTrace();
        StackTraceElement element    = elements[elements.length-1];

        System.out.println(element.getFileName().replaceAll("java", "class") + "(" + element.getMethodName() + ")\t" + out);
    }

kann ich mich darauf verlassen, dass der eintrag an der Position [c]elements.length - 1[/c] immer die Daten enthält an die ich möchte?
 

Zurück
Oben