Die verschiedenen Methoden sind Prioritätsangaben. Wie Sie sie aufgelistet haben, gehen sie vom am wenigsten zum wichtigsten über. Ich denke, wie Sie sie speziell Debug-Protokollen in Ihrem Code zuordnen, hängt von der Komponente oder App ab, an der Sie arbeiten, sowie davon, wie Android sie mit verschiedenen Build-Varianten (eng, userdebug und user) behandelt. Ich habe eine Menge Arbeit in den nativen Dämonen in Android geleistet, und so mache ich es. Es gilt möglicherweise nicht direkt für Ihre App, aber es gibt möglicherweise Gemeinsamkeiten. Wenn meine Erklärung vage klingt, dann deshalb, weil einiges davon eher eine Kunst als eine Wissenschaft ist. Meine Grundregel lautet, so effizient wie möglich zu sein, sicherzustellen, dass Sie Ihre Komponente angemessen debuggen können, ohne die Leistung des Systems zu beeinträchtigen, und immer nach Fehlern zu suchen und diese zu protokollieren.
V - Ausdrucke des Zustands in verschiedenen Intervallen oder bei Ereignissen, die von meiner Komponente verarbeitet werden. Möglicherweise auch sehr detaillierte Ausdrucke der Nutzdaten von Nachrichten / Ereignissen, die meine Komponente empfängt oder sendet.
D - Details zu kleineren Ereignissen, die in meiner Komponente auftreten, sowie zu Nutzdaten von Nachrichten / Ereignissen, die meine Komponente empfängt oder sendet.
I - Der Header aller Nachrichten / Ereignisse, die meine Komponente empfängt oder sendet, sowie aller wichtigen Teile der Nutzlast, die für den Betrieb meiner Komponente kritisch sind.
W - Alles, was passiert, ist ungewöhnlich oder verdächtig, aber nicht unbedingt ein Fehler.
E - Fehler, dh Dinge, die nicht passieren sollen, wenn die Dinge so funktionieren, wie sie sollten.
Der größte Fehler, den die Leute machen, ist, dass sie Dinge wie V, D und I überbeanspruchen, aber niemals W oder E verwenden. Wenn ein Fehler per Definition nicht auftreten soll oder nur sehr selten auftreten sollte, ist er extrem billig für Sie, um eine Nachricht zu protokollieren, wenn es auftritt. Wenn Sie jedoch jedes Mal, wenn jemand eine Taste drückt, eine Log.i () ausführen, missbrauchen Sie die gemeinsam genutzte Protokollierungsressource. Verwenden Sie natürlich den gesunden Menschenverstand und seien Sie vorsichtig mit Fehlerprotokollen für Dinge, die außerhalb Ihrer Kontrolle liegen (wie Netzwerkfehler) oder solche, die in engen Schleifen enthalten sind.
Vielleicht schlecht
Log.i("I am here");
Gut
Log.e("I shouldn't be here");
Vor diesem Hintergrund können Sie die Basisprotokollierungsstufe für Ihren Code umso mehr einschränken, je näher Ihr Code der "Produktionsbereitschaft" kommt (Sie benötigen V in Alpha, D in Beta, I in der Produktion oder möglicherweise sogar W in der Produktion ). Sie sollten einige einfache Anwendungsfälle durchgehen und die Protokolle anzeigen, um sicherzustellen, dass Sie immer noch verstehen, was passiert, wenn Sie eine restriktivere Filterung anwenden. Wenn Sie mit dem folgenden Filter arbeiten, sollten Sie immer noch in der Lage sein zu erkennen, was Ihre App tut, aber möglicherweise nicht alle Details erhalten.
logcat -v threadtime MyApp:I *:S
Verbose
Protokollierung. Es ist das, was Sie verwenden, wenn Sie jede mögliche logische Operation ausgeben möchten.