[JAVA] Méthode de sortie de journal correcte sur Android (classe de journal standard vs AnkoLogger)

Contexte

Présentation de AnkoLogger développé par JetBrains comme OSS pour la migration Java-> Kotlin. J'ai essayé, mais même si je produis un journal détaillé et de débogage, il n'a pas été envoyé vers logcat d'Android Studio. En enquêtant sur la cause, j'ai remarqué que j'avais mal compris le comportement de la classe Log standard ʻandroid.util.Log` plutôt que le problème d'AnkoLogger. ..

Niveau de journalisation et comportement de chaque bibliothèque

D'après ma propre reconnaissance jusqu'à présent, si j'écris Log.d (TAG," foo "), le journal sera affiché lorsque le niveau de journalisation est débogué ou inférieur (c'est-à-dire débogué, détaillé) et verbeux / est toujours dans l'environnement de développement. Je me demandais si je regardais le journal de débogage car le niveau du journal était détaillé. En conclusion, la reconnaissance de ↑ était erronée et le niveau de journalisation par défaut était info. Ensuite, la raison pour laquelle le journal détaillé / débogage est sorti est que même si vous écrivez ** Log.d (TAG," foo "), il semble que le journal est en fait sorti quel que soit le niveau du journal **. Il est nécessaire de juger le niveau de journalisation par une autre méthode, et pour le séparer, il est nécessaire de le contrôler avec l'instruction if comme suit. (À propos, le niveau de journalisation est défini pour chaque balise)

if ( Log.isLoggable(TAG, DEBUG) ) Log.d(TAG, "foo");

Pourquoi est-ce une spécification si redondante? ..

D'autre part, Anko Logger

debug("foo") //La balise est le nom de l'activité appelante par défaut

Si vous écrivez, il déterminera le niveau de journalisation en interne. Le côté utilisateur est sorti en fonction du niveau de journal sans écrire une instruction if. Personnellement, c'est nettement plus intuitif. La même question a été soulevée sur la question de Github, je ne suis donc pas le seul à avoir mal compris les spécifications de la classe Log standard.

Résumé

Si vous l'organisez à nouveau,

Compte tenu de la clarté et de la sécurité du code, je préfère personnellement utiliser AnkoLogger. Si vous utilisez Java ou que vous ne souhaitez pas inclure de bibliothèques dépendantes inutiles, vous souhaiterez peut-être créer une classe wrapper Log standard de type AnkoLogger.

Recommended Posts

Méthode de sortie de journal correcte sur Android (classe de journal standard vs AnkoLogger)
Je souhaite simplifier la sortie du journal sur Android
Exemple de sortie de journal standard Java