miércoles, 24 de octubre de 2012

Mi propia classe "Log"

La mayoría de programadores Android utilizamos la classe Log. Para el que no la conozca, esta classe nos permite mandar "mensajes" que podemos ver con el LogCat, y esto resulta útil para poder ver el valor de una variable en un punto determinado, o si se ha llamado a un método en concreto, para verificar el ciclo de vida de un Activity, y así un largo etc.

El "problema" es que si no quitamos (o comentamos) estos "menajes", también serán visibles para los usuarios de nuestras apps si consultan el Log en su terminal, o si miran el LogCat conectando su terminal a un PC, y esto no siempre queremos que ocurra.

Para evitar esto, en su tiempo cree una classe propia que permite mostrar/ocultar todos estos Logs cambiando sólo un parámetro, y la comparto con vosotros por si os resulta útil...

La classe en cuestión es esta:


public class MyLog {

 private static final Boolean LOGS_ON = true;

 // Send a DEBUG log message.
 public static void d(String tag, String msg) {
  if (LOGS_ON) {
   Log.d(tag, msg);
  }
 }

 // Send a DEBUG log message and log the exception.
 public static void d(String tag, String msg, Throwable tr) {
  if (LOGS_ON) {
   Log.d(tag, msg, tr);
  }
 }

 // Send an INFO log message.
 public static void i(String tag, String msg) {
  if (LOGS_ON) {
   Log.i(tag, msg);
  }
 }

 // Send a INFO log message and log the exception.
 public static void i(String tag, String msg, Throwable tr) {
  if (LOGS_ON) {
   Log.i(tag, msg, tr);
  }
 }

 // Send an ERROR log message.
 public static void e(String tag, String msg) {
  if (LOGS_ON) {
   Log.e(tag, msg);
  }
 }

 // Send a ERROR log message and log the exception.
 public static void e(String tag, String msg, Throwable tr) {
  if (LOGS_ON) {
   Log.e(tag, msg, tr);
  }
 }

 // Handy function to get a loggable stack trace from a Throwable
 public static void getStackTraceString(Throwable tr) {
  if (LOGS_ON) {
   Log.getStackTraceString(tr);
  }
 }

 // Send a VERBOSE log message.
 public static void v(String tag, String msg) {
  if (LOGS_ON) {
   Log.v(tag, msg);
  }
 }

 // Send a VERBOSE log message and log the exception.
 public static void v(String tag, String msg, Throwable tr) {
  if (LOGS_ON) {
   Log.v(tag, msg, tr);
  }
 }

 // Send a WARN log message.
 public static void w(String tag, String msg) {
  if (LOGS_ON) {
   Log.w(tag, msg);
  }
 }
}


Y para usarla tan sólo tendremos que utilizar "MyLog.i(tag, msg)" en lugar de "Log.i(tag, msg)". Si queremos ocultar todos los logs, simplemente cambiamos el valor de la constante LOGS_ON a "false" y ya no se mostrará ningún Log.

domingo, 14 de octubre de 2012

Primer post...

A pesar de que nunca he sido muy bloguero, llevo tiempo con ganas de tener un sitio en el que poder compartir todo tipo de cosas relacionadas con el mundo de la programación Android, así que me he decidido a crear este blogger, a ver cómo va la cosa...