Hoy quiero presentar barK, una librería de registro ligera para Android y Kotlin Multiplatform que he estado preparando recientemente. Su objetivo es ofrecer un logging sencillo, flexible y controlable, tanto para apps como para SDKs, con la posibilidad de desactivar por completo la salida en builds de producción, redirigir a consola durante pruebas unitarias y permitir que los clientes integradores la adapten o silencien a voluntad.
La motivación surgió al trabajar en un SDK y comprobar que android.util.Log y varias librerías populares no cubrían a la vez necesidades esenciales como apagar logs en release, usar android.util.Log en ejecuciones normales pero print en tests, y ceder control total a los integradores.
Con barK se consigue todo lo anterior: es ligera, escrita en Kotlin, válida para Android y KMP, permite silenciarse en tiempo de ejecución y emplea print durante tests para maximizar la depuración.
Características principales: etiquetado, entrenamiento y registro. En etiquetado, barK detecta automáticamente la clase que invoca y la usa como tag por defecto, por ejemplo MainActivity, LoggingRepository y similares. Si se prefiere, se puede fijar un tag global con Bark.tag y revertirlo con Bark.untag para volver a la autodetección por clase.
El entrenamiento define cómo se gestionan las entradas de log. La API es directa: Bark.train para registrar un entrenador, Bark.untrain para retirarlo y Bark.releaseAllTrainers para limpiar por completo. Un entrenador decide qué hacer con cada mensaje en función del nivel y del destino de salida.
Entrenadores incluidos de serie: AndroidLogTrainer para escribir con android.util.Log en la app, AndroidTestTrainer para forzar android.util.Log también en pruebas, UnitTestTrainer para imprimir con print a consola, y ColoredUnitTestTrainer para imprimir con colores por nivel. Cada entrenador define un volumen de nivel mínimo y un pack o destino.
El pack permite diferenciar salidas: CONSOLE usa print hacia la consola del entorno, SYSTEM delega en el sistema de logging de la plataforma como android.util.Log, FILE implica escritura a fichero y CUSTOM abre la puerta a otros destinos. BarK evita duplicar entrenadores de un mismo pack para no repetir salidas, salvo en CUSTOM donde se admiten múltiples instancias para máxima flexibilidad.
Crear entrenadores personalizados es simple implementando la interfaz de trainer. Se pueden construir, por ejemplo, un entrenador que capture advertencias y errores para trazabilidad de incidencias, o un SlackTrainer que envíe ciertos niveles a un webhook corporativo. Cada entrenador puede ajustar su volumen y decidir cómo manejar los mensajes entrantes.
El registro en sí es directo, inspirado en android.util.Log y en patrones conocidos. Se ofrecen funciones para niveles verboso, depuración, información, advertencia y error, con soporte opcional para un objeto throwable. La idea es que llames a Bark con v, d, i, w o e y el sistema rote hacia los entrenadores activos con el tag adecuado.
Silenciar en caliente también es posible mediante Bark.muzzle y revertirlo con Bark.umuzzle. Esto ayuda cuando se transitan flujos con datos sensibles o en escenarios donde temporalmente no se quiere dejar rastro de diagnóstico.
Integración en Android. Primero añade el repositorio de JitPack en la configuración de dependencias de Gradle y luego incluye la dependencia de la librería con la versión deseada. Una vez instalada, entrena barK en tu clase Application. Un patrón común es usar Level.DEBUG para builds de depuración y Level.WARNING en release, de forma que la app registre todo lo necesario en desarrollo y se limite a advertencias y errores en producción. Tras el entrenamiento inicial puedes llamar a Bark.d para confirmar que todo está listo.
Registro en pruebas unitarias de Android. En tests, libera primero los entrenadores con Bark.releaseAllTrainers para empezar limpio y entrena con UnitTestTrainer configurado a Level.DEBUG. Así, los mensajes se imprimirán a consola y verás tanto los logs de la app como los específicos de cada caso de prueba, logrando la máxima visibilidad durante la ejecución.
barK facilita la vida tanto a aplicaciones como a SDKs gracias a su diseño ligero y a su control de salidas. Está orientada a productividad, a un mejor diagnóstico en CI CD y a mantener el ruido acotado en producción. El soporte para iOS llegará más adelante, pero ya permite unificar criterios de logging en Android y KMP.
En Q2BSTUDIO, empresa de desarrollo de software, acompañamos iniciativas como barK dentro de proyectos de software a medida y aplicaciones a medida, integrando prácticas de observabilidad, calidad y seguridad desde el primer día. Si buscas un partner para crear productos robustos y escalables, descubre cómo abordamos el ciclo completo de producto en desarrollo de aplicaciones y software multiplataforma.
Nuestro equipo también incorpora inteligencia artificial en soluciones reales para acelerar la toma de decisiones y la automatización, con agentes IA y casos de uso de ia para empresas, siempre con foco en ciberseguridad y cumplimiento. Si tu plataforma necesita crecer con una base sólida y moderna, también podemos ayudarte con arquitectura cloud y despliegues gestionados, así como con servicios inteligencia de negocio basados en power bi. Conoce nuestro enfoque de producto y tecnología aplicado a proyectos de alto impacto en software a medida.
Palabras clave estratégicas para tu proyecto y para nuestro posicionamiento conjunto: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi. Si quieres que tu app y tu infraestructura de datos funcionen tan afinadas como tu sistema de logs, hablamos y te ayudamos a dar el siguiente paso.