Related Articles
Timber ist eine Protokollierungsdienstprogrammklasse, die auf der Protokollklasse von Android aufbaut. Während der Entwicklung werden in der Regel viele Protokollanweisungen geschrieben, und vor der Veröffentlichung werden die Protokollanweisungen bereinigt, indem sie manuell entfernt werden (obwohl Protokolle in der Versionserstellung deaktiviert werden können). Dieser mühsame Vorgang kann mit Timber leicht vermieden werden.
Timber bietet auch viele andere Optionen. Mal sehen, wie es in unseren Projekten verwendet werden kann, um die Protokolle besser zu pflegen.
Nachfolgend sind einige Debug-Anweisungen aufgeführt, die mit der Standard-Protokollklasse gedruckt wurden.
int a = 100; Log.e ("TAG", String.format ("Integer a value is:% d", a)); String name = "Android Studio"; Log.e ("TAG", String.format ("Mein Name ist:% s", Name));
Die obigen Aussagen können mit Timber wie folgt gedruckt werden.
// Ganzzahl int a = 100; Timber.d ("Integer a value is:% d", a); String name = "Android Studio"; Timber.d ("Mein Name ist:% s", Name);
- Sie können hier feststellen, dass das TAG nicht an Timber übergeben wird, da es automatisch die Klasse erkennt, in der Protokolle geschrieben wurden.
- Außerdem wird String-Formatierer nicht zum Formatieren verwendet Die Anweisung als Timber kann dies automatisch für Sie tun.
2. Integrieren von Timber
Lassen Sie uns nun sehen, wie Sie die Timber-Bibliothek in Ihr Projekt integrieren, um sie in jeder Klasse verfügbar zu machen.
1 . Erstellen Sie ein neues Projekt in Android Studio aus Datei ⇒ Neues Projekt und wählen Sie Grundaktivität aus Vorlagen.
2 . Öffnen Sie build.gradle und fügen Sie die Abhängigkeit von Timber hinzu. Buttermesser ist hier optional, wird aber für dieses Beispiel benötigt.
// Holz Implementierung 'com.jakewharton.timber: timber: 4.7.1' // Buttermesser Implementierung 'com.jakewharton: butterknife: 8.8.1' annotationProcessor 'com.jakewharton: butterknife-compiler: 8.8.1'
3 . Timber muss initialisiert werden, sobald die App startet. Also, Application Class wäre der beste Ort, um das zu tun. Erstellen Sie eine neue Klasse mit dem Namen MyApplication.java und erweitern Sie die Klasse von Application .
- Initialisieren Sie Timber in der onCreate-Methode, indem Sie einen neuen Baum pflanzen.
- Hier druckt Timber.DebugTree () Protokolle im Debug-Modus.
- Wenn Sie Ausnahmen im Release-Modus abfangen möchten, können Sie dies erstelle einen anderen Baum und pflanze ihn im Freigabemodus. Dieser Schritt ist vollständig optional. Wenn Sie jedoch Ausnahmen an einen anderen Dienst senden möchten, ist dies der geeignete Ort.
package info.androidhive.timber; android.app.Application importieren; import info.androidhive.timber.log.ReleaseTree; importieren timber.log.Timber; öffentliche Klasse MyApplication erweitert Application { @Override public void onCreate () { super.onCreate (); if (BuildConfig.DEBUG) { Timber.plant (neues Timber.DebugTree ()); } else { Timber.plant (neuer ReleaseTree ()); } } }
4 . Sie können einen benutzerdefinierten Baum erstellen, indem Sie die Klasse von Timber.Tree erweitern. Hier ist das Beispiel für die Klasse ReleaseTree.java .
package info.androidhive.timber.log; import android.util.Log; importieren timber.log.Timber; public class ReleaseTree erweitert Timber.Tree { @Override Protected Void Log (Int-Priorität, String-Tag, String-Nachricht, Throwable t) { if (priority == Log.VERBOSE || priority == Log.DEBUG) { Rückkehr; } // Logge deinen Absturz zu deinem Favoriten // Senden eines Absturzberichts an Firebase CrashAnalytics // FirebaseCrash.report (message); // FirebaseCrash.report (neue Ausnahme (Nachricht)); } }
4 . Fügen Sie schließlich MyApplication zu Ihrem
hinzu.
5 . Jetzt kann Timber in Ihrer App verwendet werden. Im Folgenden finden Sie einige Beispiele für Timber-Protokollanweisungen, die verschiedene Szenarien veranschaulichen.
package info.androidhive.timber; android.os.Bundle importieren; android.support.v7.app.AppCompatActivity importieren; import android.support.v7.widget.Toolbar; android.widget.Toast importieren; Buttermesser importieren.ButterKnife; import butterknife.OnClick; import butterknife.Unbinder; importieren timber.log.Timber; public class MainActivity erweitert AppCompatActivity { private Unbinder Unbinder; @Override protected void onCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); unbinder = ButterKnife.bind (this); Toolbar toolbar = findViewById (R.id.toolbar); setSupportActionBar (Symbolleiste); // Boolescher Wert boolean isWeekend = false; Timber.d ("Gibt den Booleschen Wert aus. Ist am Wochenende:% b", ist am Wochenende); // integer int a = 100; Timber.d ("Integer a value is:% d", a); // float float pi = 3,14159f; Timber.d ("Pi-Wert ist:% f", pi); } @OnClick (R.id.btn_log_string) void logMessage () { Timber.d ("Hallo von Timber!"); showToast (); } @OnClick (R.id.btn_log_exception) void logException () { Versuchen { int a = 10/0; Timber.d ("Wert von a:% d", a); } catch (Ausnahme e) { Timber.e (e); // oder // Timber.e ("Ausnahme in der mathematischen Operation:% s", e.getMessage ()); } showToast (); } private void showToast () { Toast.makeText (getApplicationContext (), "LogCat auf Meldung oder Fehler prüfen!", Toast.LENGTH_SHORT) .show (); } @Override Geschützte Leere onDestroy () { super.onDestroy (); unbinder.unbind (); } }