Gibt es eine Möglichkeit, den Methodennamen in Android automatisch zu protokollieren?

8

Ich benutze diese Art von Muster:

%Vor%

Wo ist mein Wrapper Runde Androids Log.v, die String ... Args nimmt. Dies gibt Logcat-Ausgabe wie folgt:

%Vor%

Was ich suche, ist eine Möglichkeit, den Methodennamen, in diesem Fall update (), automatisch und auf eine Art und Weise zu protokollieren, die die Art und Weise, wie TAG arbeitet, überlebt. Ich habe den Aufruf von class.getMethods () gesehen, kann aber keine Möglichkeit sehen, die zurückgegebene Liste zur Laufzeit mit der aktuellen Methode zu indizieren.

    
Carl Whalley 31.07.2011, 18:14
quelle

5 Antworten

13

Sie können diese Anweisungen in eine Konstante einschließen, damit sie für Ihre veröffentlichte Version kompiliert werden (die sowieso keine Log.v-Anweisungen ausgibt), aber Sie können so etwas tun:

%Vor%

Es hängt davon ab, wie du es nennst, um zu bestimmen, welchen StackTraceElement Index du willst, einfach debuggen oder ein paar Mal spielen, um es zu finden.

Wenn Sie Ihre veröffentlichte Version kompilieren, legen Sie einfach FINAL_CONSTANT_IS_LOCAL auf false fest, und dieser Codeblock wird gelöscht, wobei immer TAG zurückgegeben wird.

    
CrackerJack9 31.07.2011, 18:23
quelle
9

Es scheint teuer, aber Sie könnten

verwenden %Vor%

Der Grund, warum Sie einen Index von 2 verwenden, ist, dass 0 = currentThread und 1 = getStackTrace zurückgibt. Dies funktioniert auf Java 1.5 und höher, ich würde es in irgendeine Art von if (DEBUG) {} einbinden, so dass es nicht im Produktionscode ist

Natürlich müssen Sie die Tiefe anpassen, wenn Sie diese in eine Methode usw. einfügen.

    
Idistic 31.07.2011 18:29
quelle
2

Ich habe einen benutzerdefinierten Logger, der Android Log umschließt.

zeigt den Klassennamen, den Methodennamen und die Zeilennummer an.

Ссылка

    
jimmy.hautelook 17.08.2011 22:13
quelle
2

Ich habe eine MethodLogger-Klasse erstellt, die ich am Anfang einer Methode instanziiere.
Es ermittelt den Klassennamen & amp; Methodenname.
Es verfügt auch über einen praktischen elapsedTime-Logger , auf den Sie zugreifen können, indem Sie methodLogger.end () aufrufen.

Verwendung - Setzen Sie dies am Anfang einer Protokollierungsmethode:

%Vor%

Um einige Debug-Meldungen optional zu protokollieren:

%Vor%

Protokollieren, wann eine Methode endet und die verstrichene Zeit seit dem Start der Methode anzeigen:

%Vor%

Ergebnisse:

%Vor%

MethodLogger-Klasse:

%Vor%     
Devin Dow 21.03.2018 16:36
quelle
0

Sie könnten statische Methoden wie diese erstellen und sie am Anfang und am Ende der Methoden aufrufen, die Sie debuggen möchten:

%Vor%

Und

%Vor%

Ich habe dieses Logging-Dienstprogramm für Android mit ein paar weiteren Funktionen erstellt, mit Ausnahme der Eingabe- und Beendigungsprotokolle. Sie könnten es nützlich finden.

    
Vinay Wadhwa 23.10.2013 11:02
quelle

Tags und Links