Recientemente empecé a trabajar un poco de nuevo con Android devices y recordé de nuevo la manera en la que me gusta enviar logs, cuando encuentro un bug, a mis compañeros devs de Android. Creo que todos lo que comunmente hacemos es, ya sea abrir nuestro Android Studio, o terminal, lanzamos logcat, vemos los logs que queremos enviar, seleccionamos y “copy-pasteamos” y los metemos en un .txt
Hace tiempo alguien, creo que Oscar Martínez, con quien trabajé en Quepasa y en The Meet Group, me enseño una pequeña herramienta llamada Pidcat (https://github.com/JakeWharton/pidcat) hace mucho tiempo era una muy buena herramienta porque simplificaba mucho tu logcat. Con un simple:
pidcat com.tu.app
podías tener logs coloridos y filtrados solo a tu app en la terminal.
Tiempo después se me ocurrió, ¿que tal si les ayudo un poco a mis devs y les comparto estos logs coloridos? porque en realidad si solo copias y pegas esto a un .txt directo o incluso si lo envias directo en la terminal, no se copian los colores, bueno si, se copian los códigos ANSI, pero no interpreta los colores. Buscando descubrí otra pequeña herramienta llamada aha (https://github.com/theZiz/aha). Lo que hace es transformar códigos ANSI para colores en la terminal a tags de colores en HTML. Con esto, lo que hago (o hacía, más bien, más en un momento acerca de esto) es usar los logs de Android coloridos de Pidcat, los redirijo a Aha para transformar a código HTML y de ahi creo directamente un HTML con los logs coloridos.
Sin embargo, no hace mucho, me hice de una nueva computadora. Hasta hace poco no había necesitado hacer este setup de nuevo, pero hace poco comencé a trabajar en un proyecto donde necesité utilizar esto y al instalar Pidcat y correrlo un poco, me empezó a dar problemas, el output aparece con caracteres cortados y por alguna razón no me mostraba los logs específicos para mi “Application Under Test” (AUT). Entonces, me busqué cual es el parámetro que hay que mandarle a logcat para mostrarlo con color, y ahora lo que podemos hacer es básicamente lo mismo pero con logcat en lugar de Pidcat.
Pasos
- Pre-requisitos, tener Android Studio instalado (para tener a la mano
logcat, viaadb) - Abrimos terminal y le damos
brew updateluego le damosbrew install aha - Ya con estos dos, podemos hacer lo siguiente:
adb shell logcat --pid=$(adb shell pidof -s com.tu.aplicacion) -v time -v color | aha --title ’Titulo Logs' > path/al/archivo/logs.html
donde --pid=$(adb shell pidof -s com.tu.aplicacion) especifica la app,
-v time le instruye en imprimir timestamp con los logs
-v color solicita que los logs se impriman con color
el pipe (|) le dice que el output de todo eso lo mande al siguiente comando, que es aha y > a su vez redirige el output de aha al archivo HTML.
Una vez que hacemos en el device todo lo necesario de lo cual queremos capturar logs, le damos ctrl + C y con eso terminamos de llenar el HTML. Ese archivo es el que compartimos y listo. Con esto ya nuestros devs pueden ver en verde todos los logs informativos y en rojo todo lo que sea error de tal manera que es más fácil para ellos dar con algún error.
¿Como ven? ¿Tienen algún otro tip rapidito como este, para ayudar a resolver problemas mas fácil? Déjenme un comentario aquí abajito.