Mejor registro de Android con Timber Library
Timber es una clase de utilidad de registro que se basa en la clase de registro de Android. Durante el desarrollo, normalmente escribimos muchas directivas de registro y las limpiamos antes de publicarlas eliminándolas manualmente (aunque los registros se pueden deshabilitar en la versión de la versión). Este largo proceso se puede evitar fácilmente utilizando madera.
La madera también ofrece muchas otras opciones. Veamos cómo se puede utilizar en nuestros proyectos para mantener mejor los registros.
1. Madera
A continuación se muestran algunas declaraciones de depuración impresas con la clase de registro estándar.
int a = 100; Log.e("TAG", String.format("Integer a value is: %d", a)); String name = "Android Studio"; Log.e("TAG", String.format("My name is: %s", name));
Las declaraciones anteriores se pueden imprimir utilizando Timber como se muestra a continuación.
// integer int a = 100; Timber.d("Integer a value is: %d", a); String name = "Android Studio"; Timber.d("My name is: %s", name);
- Puedes encontrar eso aquí ETIQUETA no se pasará a Timber, ya que detectará automáticamente la clase en la que se escribieron los registros.
- igualmente Formateador de cadenas no se utiliza para formatear la instrucción, ya que Timber puede hacerlo automáticamente.
2. Integra la madera
Ahora veamos cómo incorporar la biblioteca Timber en su proyecto y ponerla a disposición en cada clase.
1. Crea un nuevo proyecto en Android Studio Archivo ⇒ nuevo proyecto y seleccione Actividad basica de plantillas.
2. abrir build.gradle y agregue la dependencia de madera. El cuchillo de mantequilla es opcional aquí, pero es necesario para este ejemplo.
// timber implementation 'com.jakewharton.timber:timber:4.7.1' // butter knife implementation 'com.jakewharton:butterknife:8.8.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
3. Timber debe inicializarse tan pronto como se inicie la aplicación. Por lo tanto, la clase de aplicación sería el mejor lugar para hacer esto. Crea una nueva clase llamada MyApplication.java y ampliar la clase de solicitud.
- Inicialice Timber en el método onCreate plantando un árbol nuevo.
- Aquí Timber.DebugTree () imprime registros en modo de depuración.
- Si desea detectar excepciones en modo de lanzamiento, puede crear otro árbol y plantarlo en modo de lanzamiento. Este paso es completamente opcional. Sin embargo, si desea enviar excepciones a otro servicio, este es el lugar adecuado para hacerlo.
package info.androidhive.timber; import android.app.Application; import info.androidhive.timber.log.ReleaseTree; import timber.log.Timber; public class MyApplication extends Application @Override public void onCreate() super.onCreate(); if (BuildConfig.DEBUG) Timber.plant(new Timber.DebugTree()); else Timber.plant(new ReleaseTree());
Cuarto. Puede crear un árbol personalizado expandiendo la clase de Madera.Árbol. Aquí está el ejemplo de ReleaseTree.java Clase.
package info.androidhive.timber.log; import android.util.Log; import timber.log.Timber; public class ReleaseTree extends Timber.Tree @Override protected void log(int priority, String tag, String message, Throwable t) priority == Log.DEBUG) return; // log your crash to your favourite // Sending crash report to Firebase CrashAnalytics // FirebaseCrash.report(message); // FirebaseCrash.report(new Exception(message));
Cuarto. Agregar al final Mi aplicación para usted
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="info.androidhive.timber"> <application android:name=".MyApplication" ...> </application> </manifest>
5. Timber ahora está listo para usarse en su aplicación. A continuación se muestran algunos ejemplos de instrucciones de registro de madera que ilustran diferentes escenarios.
package info.androidhive.timber; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.widget.Toast; import butterknife.ButterKnife; import butterknife.OnClick; import butterknife.Unbinder; import timber.log.Timber; public class MainActivity extends 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(toolbar); // boolean boolean isWeekend = false; Timber.d("This prints the boolean value. Is weekend: %b", isWeekend); // integer int a = 100; Timber.d("Integer a value is: %d", a); // float float pi = 3.14159f; Timber.d("Pi value is: %f", pi); @OnClick(R.id.btn_log_string) void logMessage() Timber.d("Hello from Timber!"); showToast(); @OnClick(R.id.btn_log_exception) void logException() try int a = 10 / 0; Timber.d("Value of a: %d", a); catch (Exception e) Timber.e(e); // or // Timber.e("Exception in math operation: %s", e.getMessage()); showToast(); private void showToast() Toast.makeText(getApplicationContext(), "Check LogCat for message or error!", Toast.LENGTH_SHORT).show(); @Override protected void onDestroy() super.onDestroy(); unbinder.unbind();
¡Hola! Soy el fundador de androidhive y un entusiasta de la programación. Mis habilidades incluyen Android, iOS, PHP, Ruby on Rails y mucho más. Si tienes alguna idea que debo desarrollar? Hablemos: [email protected]