Android

Aprende a loguear con Android usando Log y toString

En este post voy a mostrar algunos tips y recomendaciones para depurar nuestras apps y loguear mensajes en Android usando los métodos estáticos de Log, el Logcat de Android Studio y los métodos toString de las clases.

La etiqueta de Log

Es una buena práctica definir una etiqueta de log en nuestras actividades (Activities) o fragmentos en donde queremos depurar. Por ejemplo, veamos un fragmento que estoy programando:


public class AgregarLugaresFragmento extends Fragment {
    // Aquí la etiqueta:
    private static final String ETIQUETA_LOG = "AgregarLugaresFragmento";

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        Log.d(ETIQUETA_LOG, "Aquí vamos de nuevo");
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_agregar_lugar_fragment_paso2, container, false);
    }
}

La parte importante es la definición de la etiqueta o tag para loguear. Aunque al inicio pensemos que es más fácil loguear sin etiqueta conforme pase el tiempo y agreguemos clases nos daremos cuenta de que estábamos equivocados.

Si te fijas, la etiqueta tiene el nombre de la clase, actividad o fragmento. Recomiendo dejarla así y definirla siempre tomando en cuenta el nombre de la clase en la que estamos.

Por favor, implementa toString

Es buena práctica definir el método toString de una clase en Java, pues así podemos saber su estado. Veamos esta clase:

public class LugarParaVisitar {
    public static String TIPO_PUBLICO = "publico";
    public static String TIPO_PRIVADO = "privado";

    private String direccion;
    private LatLng cordenadas;
    private String tipo;

    public LugarParaVisitar() {
    }

    public LugarParaVisitar(String direccion, LatLng cordenadas, String tipo) {
        this.direccion = direccion;
        this.cordenadas = cordenadas;
        this.tipo = tipo;
    }

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public LatLng getCordenadas() {
        return cordenadas;
    }

    public void setCordenadas(LatLng cordenadas) {
        this.cordenadas = cordenadas;
    }

    public String getTipo() {
        return tipo;
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

}

No tiene el método toString, y no pasa nada si no lo definimos, pero al querer conocer el estado de la clase no podremos saberlo.

En cambio, si lo implementamos e imprimimos el valor de cada propiedad tendremos más datos al depurar y loguear.

No te preocupes por escribir el código tú mismo; Android Studio provee una manera de insertar el método. Ve a tu clase y presiona Alt + Insertar. Ahí selecciona toString:

Generar método toString

En la siguiente ventana selecciona los campos que deseas devolver cuando el método sea llamado. Recomiendo seleccionar todos.

Seleccionar campos para mostrar

Ahora se habrá escrito el código necesario, no tuvimos que hacer nada manualmente. Más abajo verás por qué hacemos esto.

Método generado por Android Studio

Es momento de loguear

Nada de lo de arriba es estrictamente necesario, pero ahora verás por qué lo hicimos. Como regla general recuerda:

  1. Definir la etiqueta del log en todas tus clases en donde vayas a loguear
  2. Definir el método toString de tus clases

Ahora sí, para loguear importa la clase:

import android.util.Log;

Después puedes llamar a muchos métodos de Log pero los que más destacan son d y e. El método Log.d es para debug y el de Log.e es para error.

La forma de llamar es:

Log.d(etiqueta, mensaje);

Lo que hicimos antes va a brillar ahora. Por ejemplo, si quieres mostrar el estado del Lugar para visitar harías esto:

Log.d(ETIQUETA_LOG, "El lugar es:" + lugar.toString());

Esa sintaxis también aplica para Log.e y los demás métodos.

Monitor de Android

¿En dónde están los mensajes que imprimimos? ahora lo sabremos. Cuando ya hayas ejecutado la app y tu dispositivo esté conectado por cable o de manera inalámbrica abre el Logcat.

Logcat de Android Studio

En el punto 1 tenemos el dispositivo. En el 2 puedes seleccionar la app que vas a depurar. En el 3 hay que seleccionar el tipo de mensajes que queremos ver. Si usamos Log.d deben ser debug, si es Log.e los de error.

En caso de que tu app tenga errores (no impresos por ti específicamente) siempre se encontrarán en la categoría de Error.

El punto 4 permite buscar ya sea por mensaje o por etiqueta. Ahí puedes escribir la etiqueta (aquí vemos su uso) y ver los mensajes de la clase que te interesa.

Finalmente en el paso 5 vemos lo que hay en el Log, lo cual es el lugar con todas sus propiedades.

Conclusión

Esto viene siendo el console.log o el System.out.println de Android. Gracias a esto podemos saber lo que está pasando y también podemos conocer qué errores se están ocasionando en nuestra app.

Te invito a leer más tutoriales de Android en mi blog.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

2 semanas hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 semanas hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 semanas hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 semanas hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 semanas hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

2 semanas hace

Esta web usa cookies.