Gibt es eine Möglichkeit, automatisch den Namen der Methode in Android?
Ich bin mit dieser Art von Muster:
public class FooProvider extends ContentProvider {
private static final String TAG = FooProvider.class.getSimpleName();
...
@Override
public int update(Uri uri, ContentValues values, String where, String[] whereArgs) {
l.v(TAG, TAG + ".update() Uri:" + uri.toString() + " " + db.getPath());
Wobei l mein wrapper Runde Androiden Melden.v das dauert String... args. Dies gibt logcat Ausgabe:
FooProvider.update() Uri: foo bar etc
Was ich Suche, ist eine Anmeldung, die den Namen der Methode, in diesem Fall update(), die automatisch und in einer Weise, die überlebt refactoring-Weg-TAG macht. Ich habe gesehen das Klasse.getMethods () - Aufruf kann aber nicht einen Weg finden, um index des zurückgegebenen Liste mit der aktuellen Methode zur Laufzeit.
- Sie sollten versuchen, diese einfache lib: github.com/MustafaFerhan/DebugLog
Du musst angemeldet sein, um einen Kommentar abzugeben.
Möchten Sie möglicherweise wickeln Sie diese Anweisungen in eine Konstante, so erhalten Sie zusammengestellt, die für Ihre veröffentlichten Fassung (die nicht-Druck-Protokoll.v Aussagen sowieso), aber man kann etwas wie das hier tun:
Es wird davon abhängen, wie Sie es nennen, zu ermitteln, welche
StackTraceElement
index Sie wollen, nur Debuggen oder spielen Sie um ein paar mal, um es zu finden.Beim kompilieren der veröffentlichten version, setzen Sie einfach FINAL_CONSTANT_IS_LOCAL auf false und der code-block gehen Weg, immer wiederkehrenden TAG.
Scheint es teuer, aber man könnte
Der Grund, Sie verwenden ein index von 2 ist, dass 0 = zurückkehren würde currentThread und 1 = getStackTrace. Dies funktioniert auf Java 1.5 und höher, würde ich wickeln Sie es in einer Art if (DEBUG) {} thing, so dass es nicht in der Produktion code
Natürlich müssen Sie passen Sie die Tiefe, wenn Sie, dass innerhalb einer Methode etc.
Erstellte ich eine MethodLogger Klasse, dass instanziiere ich am Anfang einer Methode.
Es zahlen aus den Namen der Klasse & name der Methode.
Es hat auch eine handliche elapsedTime logger, dass Sie den Zugang durch Aufruf methodLogger.Ende().
Nutzung - diese am Anfang einer Methode zu Protokoll:
Optional log-einige debug-Meldungen:
Zu melden, wenn eine Methode beendet und zeigen die verstrichene Zeit, seit der die Methode gestartet:
Ergebnisse:
MethodLogger Klasse:
Habe ich eine custom-logger, der wickelt sich um android Log.
wird angezeigt, Klassenname, Methodenname und die Zeilennummer.
http://www.hautelooktech.com/2011/08/15/android-logging/
könnten Sie statische Methoden, wie Sie diese und rufen Sie Sie vom Anfang und Ende des Methoden, die Sie Debuggen möchten:
Und
Ich erstellt dieses Logging utility für Android-mit ein paar mehr features,andere als entry-exit-Protokolle. Sie könnten es nützlich finden.
Können Sie einen Blick auf java-code von Holz Bibliothek von Jake Wharton.
In der Tat, die wichtigste Idee in
Diese gibt ein array von
StackTraceElement
Der Algorithmus sieht wie
Bitte Lesen Sie hier mehr - https://medium.com/@wdziemia/timber-c733b1faa5b6
Müssen Sie nur neben message und input zu dieser Funktion automatische erstellen von log -