Usar la consola de salida en Eclipse System.out.println y Log
- Andrés Cruz
Si eres nuevo desarrollando para Android, seguramente en algún lugar del código de tu aplicación has hecho algo como esto:
System.out.println(message)
Donde message es algún mensaje para imprimir por la consola de Eclipse, dicho mensaje ofrece alguna información clave al momento de desarrollar, un valor clave, una bandera, etc. Pero vemos que al momento de ejecutar la impresión por pantalla, esta no aparece por la consola. La API de Android incorpora la Clase Log para enviar este tipo de información, y por lo tanto es lo que debemos usar al momento de desarrollar.
Métodos de la Clase Log
Metodo | Constante | Descripsión |
---|---|---|
Log.e() | ERROR | Este nivel de log debe usarse cuando algo fatal ocurre en la aplicación; en otras palabras, al ocurrir algún error o issies, normalmente es buena idea usar este nivel para reportarlos. |
Log.w() | WARNING | Este nivel debe usarse cuando ocurre algún cambio serio o inesperado; pero es probable que sea un estado recuperable. |
Log.i() | INFO | Este nivel debe usarse al tratarse de un acontecimiento netamente informativo y que no necesariamente sea un error. |
Log.d() | DEBUG | Este nivel debe usarse cuando se desee conseguir una mayor información; algo relevante que esta ocurriendo cuando la aplicación está ejecutándose en el dispositivo. |
Información de los métodos de la Clase Log
En Android, todos los mensajes de log llevarán asociada la siguiente información:
- Fecha: Hora del mensaje log.
- Criticidad: Nivel del mensaje log.
- PID.
- Tag: Etiqueta identificativa del mensaje log.
- Mensaje: Texto del mensaje log.
Parámetros de los métodos de la Clase Log
Cualquiera de los métodos explicados recibe 2 parámetros como mínimo, el tag y el mensaje:
- (String) tag: Usado para identificar el mensaje; es una buena práctica declararlos como una constante al inicio de la clase:
private static final String TAG = "MyTag";
- (String) msg: El mensaje que se desea registrar.
- (Throwable) tr: La excepción que se desea registrar (opcional).
Para ver cualquiera de estos mensajes es necesario tener la consola LogCat habilitada. Para ello tendremos que dirigirnos a:
Windows >> Show View >> Android >> Other >> LogCat
Ejemplos
Un ejemplo práctico de lo explicado:
private static final String TAG = "MyTag"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.e(TAG, "Mensaje de error"); Log.w(TAG, "Mensaje de warning"); Log.i(TAG, "Mensaje de información"); Log.d(TAG, "Mensaje de depuración"); }
Como podemos ver, imprimimos todos los métodos de la Clase Log ya explicados; al observar la consola LogCat veremos algo como esto:
Imagen 1: Logs de ejemplos.
Cómo se puede observar, para cada mensaje se muestra toda la información que indicamos al principio del artículo, además de estar diferenciados por un color.
Existe una variante para cada uno de los métodos de la Clase Log ya explicados, consiste en agregar un parámetro extra del tipo Throwable:
private static final String TAG = "MyTag"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); try { int a = 1/0; } catch(Throwable t) { Log.e(TAG, "Mensaje de error", t); Log.w(TAG, "Mensaje de warning", t); Log.i(TAG, "Mensaje de información", t); Log.d(TAG, "Mensaje de depuración", t); } }
Aunque la forma correcta sería solo utilizar el método Log.e():
private static final String TAG = "MyTag"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); try { int a = 1/0; } catch(Throwable t) { Log.e(TAG, "Mensaje de error", t); } } }
Si ejecutamos el código anterior, observaremos que se ha agregado la excepción a nuestra traza:
Imagen 2: Log de error, ejemplo.
Conclusiones
Utilizar estos Log provistos por la API de Android, se traducen como una herramienta sencilla pero muy valiosa la hora de depurar, registrar errores o trazas de ejecución informativas de nuestras aplicaciones.
Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter