domingo, 26 de julio de 2015

MAiLog: Libreria para recibir logs por correo, desde aplicaciones ejecutando en dispositivos


Introduccion

Después de buscar un rato y no encontrar nada que me convenza decidi crear una libreria que permite recibir un email con los contenidos de Logcat y System.err desde una aplicación que este corriendo en un dispositivo fisico.
Esta basada en javax.mail  y no en Intents (que llamen a aplicaciones locales de correo, como Gmail) de manera que envie los correos automaticamente, sin intervencion del usuario.
Para no resultar demasiado verbosa filtra del Log los tags marcados como "MAiLog" que es el tag por defecto y los del System.err.
Proximamente voy a publicarla en Github como proyecto open source para que quien quiera pueda modificarla y agregarle nuevas posibilidades. Ya que la he implementado solo con posibilidades minimas de configuracion.

Descargar la libreria

Haz click aqui para descargarte la libreria:  mailoglibrary-v1.0

To get an english version of this blog entry, please click here


Configuracion

Para utilizar MAiLog en tu proyecto solo tienes que seguir los tres siguientes pasos:


1) Colocar en /assets un fichero log_config.properties

El fichero de contener la configuracion de las cuentas de correo involucradas (solo utiliza cuentas de Gmail). El nombre log_config.properties es obligatorio:















El contenido de log_config.properties es el que sigue:

sender_email=xxxxxxx@gmail.com
sender_email_password=yyyyyyyyy
receiver_email=zzzzzzzz@gmail.com
email_subject=This is Subject
log_on=true

Los nombres de las propiedades son obligatorios tambien

2) Agregar el AAR en /libs









3) Agregar la dependencia en Gradle:












El bloque repositories tiene la finalidad de permitir usar un aar local


Uso

En la Activity se debe configurar la instancia y su inicialización como sigue

LogSingleton.getInstance().init(Context context);

Ejemplo:














Para crear una entrada de Log se utiliza la clase MAiLog, que es un wrapper de la clase Log de Android. Esta clase ofrece los tipicos metodos .e, .i, .w, .d, .v en dos versiones con diferente firma para entradas; con envio de mail y sin envio de mail.
Para registrar una entrada de Log sin enviar un email debe utilizar

MAiLog.e(String mensaje)

Ejemplo:



Si deseas capturar un Log y ademas enviar todo por mail (por ejemplo cuando ocurre una excepción) debes utilizar en tu código (normalmente dentro del catch):

MAiLog.e(String mensaje, Exception excepcion)

Ejemplo:


Donde e es el objeto Exception que devuelven el catch.
El mail recibido luce así:

















Espero vuestros comentarios!