Est-il possible de connecter automatiquement le nom de la méthode dans Android?
Je suis en utilisant ce type de modèle:
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());
Où l est mon wrapper ronde des Androïdes Journal.v qui prend Chaîne... args. Cela donne logcat de sortie comme ceci:
FooProvider.update() Uri: foo bar etc
Ce que je suis à la recherche d'une manière d'enregistrer le nom de la méthode, dans ce cas, la mise à jour(), automatiquement et d'une manière qui survit à la refactorisation de la voie BALISE. J'ai vu la classe.getMethods() l'appel, mais ne peut pas voir un moyen de l'indice de la liste retournée avec la méthode actuelle, au moment de l'exécution.
vous devriez essayer cette simple lib: github.com/MustafaFerhan/DebugLog
OriginalL'auteur Carl Whalley | 2011-07-31
Vous devez vous connecter pour publier un commentaire.
Vous pouvez encapsuler ces déclarations dans une constante, de sorte qu'ils se compilé pour votre version publiée (ce qui ne sera pas de l'impression du Journal.v les déclarations de toute façon), mais vous pouvez faire quelque chose comme ceci:
Il va dépendre de comment vous l'appelez pour déterminer qui
StackTraceElement
index vous aurez qu'une envie, juste de débogage ou de jouer autour d'un peu de temps pour le trouver.Lorsque vous compilez votre version publiée, il suffit de définir FINAL_CONSTANT_IS_LOCAL à false et que le bloc de code va aller loin, revenant toujours BALISE.
OriginalL'auteur CrackerJack9
Il semble cher, mais vous pouvez utiliser
La raison pour laquelle vous utilisez un index de 2, c'est que 0 = reviendrait currentThread et 1 = getStackTrace. Cela fonctionne sur Java 1.5 et au-dessus, je l'envelopper dans une sorte de if (DEBUG) {} chose si ce n'est pas dans le code de production
Bien sûr, vous aurez besoin d'ajuster la profondeur si vous mettez cela à l'intérieur d'une méthode etc.
OriginalL'auteur Idistic
J'ai créé un MethodLogger classe que j'instancie au début d'une méthode.
Il détermine le nom de la classe & nom de la méthode.
Il a également une pratique elapsedTime enregistreur de que vous avez accès en appelant methodLogger.fin().
D'utilisation - mettre cela au début d'une méthode pour ouvrir une session:
Également la possibilité d'enregistrer certaines des messages de débogage:
De journal quand une méthode se termine et afficher le temps écoulé depuis que la méthode a commencé:
Résultats:
MethodLogger classe:
OriginalL'auteur Devin Dow
J'ai un custom enregistreur qui s'enroule autour d'android Journal.
il affichera nom de la classe, le nom de la méthode et le numéro de ligne.
http://www.hautelooktech.com/2011/08/15/android-logging/
OriginalL'auteur jimmy.hautelook
vous pourriez faire des méthodes statiques comme ces et de les appeler à partir du début et de la fin de la méthode que vous souhaitez déboguer:
Et
J'ai créé cet utilitaire de Journalisation pour Android avec un peu plus de fonctionnalités,d'autres que d'entrée-sortie des journaux. Vous trouverez peut-être utile.
OriginalL'auteur Vinay Wadhwa
Vous pouvez prendre un coup d'oeil sur le code java de bois de la bibliothèque par Jake Wharton.
En effet, l'idée principale dans
Cette fonction retourne un tableau de
StackTraceElement
L'algorithme ressemble
Veuillez en lire plus ici - https://medium.com/@wdziemia/timber-c733b1faa5b6
OriginalL'auteur yoAlex5