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. ..
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.
Si vous l'organisez à nouveau,
Log.isLoggable
, tous les journaux seront affichés même en production (niveau de journal: info), ce qui entraînera une dégradation des performances.
--Si vous ne contrôlez pas explicitement avec Log.isLoggable
, vous pouvez vérifier le journal avec logcat sans rien faire.
--L'utilisation correcte est ici $ adb shell setprop log.tag.MainActivity VERBOSE
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.