¿Por qué estás creando logs si no los estás usando?
Llega un momento en la vida de cada desarrollador (o en su rutina diaria, no estamos aquí para juzgar) en el que tienen que corregir errores. Cuando yo era desarrolladora, recuerdo cómo cada vez que me encontraba con un error, mi método favorito para solucionarlo era agregar líneas de registro (log lines). Quiero decir, ¿por qué no, verdad?
Yo, y todos los demás desarrolladores, odiamos el proceso de depuración (debugging), con todo el tiempo que hace falta para reproducir el error y depurar localmente mientras intento duplicarla producción en mi máquina local. Estaba constantemente intentando ahorrar más tiempo y evitar este proceso y pensé que este registro (logging) sería la forma de lograrlo.
Añadí líneas de registro en todas partes. Imagínate a Oprah repartiendo regalos en su programa, más o menos así es cómo configuré las líneas de registro. "Y esta línea de código obtiene un registro y este fragmento de código obtiene un registro", te puedes hacer una idea. Probablemente pienses que estoy exagerando demasiado,pero desafortunadamente, no es así. En lugar de reproducirlo localmente, quería poder contar una historia. Iba a ser una historia que fuera más rápida de entender y que me llevaría rápidamente a la causa del problema.
La experiencia de un over-logger
Desafortunadamente, mi sistema no funcionó. En lugar de contar una historia, tal cantidad de registros solo me confundieron más y, finalmente tuve que reproducir el error localmente de todos modos.
Cada vez que volvía a mi herramienta de registro, tenía que buscar un registro específico que me contara la historia del error. Esto no fue nada fácil me estaba tomando demasiado tiempo el encontrar un registro informativo.
La parte más fácil del mantenimiento de registros (log maintenance) es que se pueden añadir donde uno quiera. Lo difícil es su mantenimiento. Esta era otra cosa en la que no había pensado antes de comenzar a introducir logs por todas partes. Me dicuenta de que no se trata solo de agregar los registros. Eventualmente, al igual que con el código, los registros también deben reescribirse. Cuando las variables, la lógica y el código cambian, también lo hacen los registros. Todo este trabajo de mantenimiento no encajaba con mi depuración (debugging).
Para empeorar las cosas - y como si mantenerlos no fuera suficiente - la cantidad de dinero que suponía mantener todos estos registros en funcionamiento era muy elevada. No valía la pena gastar dinero en diferentes herramientas de registro y comprar más y más almacenamiento simplemente para que pudiéramos tener un lugar para almacenar todos nuestros registros (Link a un artículo sobre cómo minimizar estos costes). Este dinero se estaba destinando al pago de herramientas de registro, cuando en realidad no ahorraba tiempo ni esfuerzo a ninguno de los desarrolladores.
Descubrí que tanto el resto de desarrolladores como yo estábamos fatigados por la cantidad interminable de registros y el esfuerzo que se necesitaba para escribirlos y mantenerlos, cuando todo lo que queríamos era simplemente obtener la información que necesitábamos para llegar a la fuente del bug.
Como ocurre con la mayoría de las cosas en la vida, aprendí mucho a través de mi experiencia. Los logs son muy parecidos a ingerir la cantidad correcta de cafeína: con la justa medida eres invencible, capaz de superar cualquier obstáculo en tu camino. Demasiado y te preguntarás dónde te has equivocado otra vez.
¿Qué beneficios tiene logging?
No me malinterpretes, definitivamente no deberías dejar de loggear. Para cualquier equipo de desarrolladores, el logging a menudo puede ser una herramienta milagrosa. Como gerente, debes asegurarte de que tu equipo comprenda que esto no será la llave mágica que desbloquee todos los secretos del código.
Cómo optimizar el logging
Para maximizar la utilidadde los registros (logs) de tu equipo para obtener los mejores resultados, te recomiendo que te asegures de lo siguiente:
1. Al trabajar en equipo, no todos los desarrolladores están familiarizados con cada parte del código y no todos los miembros del equipo sabrán de inmediato dónde deben empezar a depurar (debug). Colocar logs en las partes adecuadas puede ser de gran ayuda para tu equipo.
2. El logging debe estar bien planificado. No creas un log porque se puede, lo haces porque es útil para el equipo. El log, cuando se hace correctamente, cuenta la historia de la aplicación.
3. Planifica con anticipación. Los logs deben administrarse correctamente, implementándose bajo un estándar estricto y colocados en áreas familiares. Imagina tu equipo de desarrolladores, ya sean desarrolladores junior o senior con 10 años de experiencia, probablemente no sea la primera vez que se encuentran con logs. Cada desarrollador tiene un método de registro diferente, pero eso no significa que uno sea necesariamente mejor que el otro. Es simplemente una cuestión de gustos y costumbres.
Hacer un seguimiento de cómo se implementan los registros, cómo se escriben y mantener un estándar dentro del equipo facilitará una mejor gestión y organización. Además, ayudará a contar una historia que eventualmente ahorrará al equipo una cantidad significativa de tiempo de depuración.
Por qué el logging significativo es el más importante
El significado lo es todo cuando se trata de logs: si no puedes comprenderlos, no podrás obtenerla información que necesitas para depurar. Imagínate que hay una situación de emergencia: tu entorno de producción está en llamas y tienes que solucionarlo ahora mismo. Tienes una herramienta: tus logs. Todo depende de cuánta información útil pueda extraer tu equipode ellos. Mantener a tu equipo sincronizado y estructurar sus hábitos para escribir logs significativos puede marcar la diferencia encuanto a la rapidez con la que puedan resolver un error.
Esto se puede hacer decidiendo juntos un estándar. Asegúrate de que tu equipo elabora todos los flujos significativos que va a querer ver mientras realiza la depuración o cuando verifica que todo esté correcto con la aplicación. Durante este proceso, piensa en las variables importantes o ciertos estados que deseas que sean visibles inmediatamente sin que el equipo tenga que hacer un esfuerzo adicional para buscarlos. La mejor manera de encontrar estas variables es pensar en un momento en el que tuvieras un error que resolver rápidamente. ¿Cuáles fueron los valores que te ayudaron a comprender el problema? Esas son las variables a utilizar.
Los logs son para todo el equipo. Es importante que al escribirlos, quien lo haga tenga en cuenta a su audiencia y a quién están destinados. Esto ayudaráa adaptar el “idioma de registro” y crear registros que sean fáciles de entender para otros. No más logs que no se entienden correctamente y muchos más bugs solucionados.
Cuándo añadir logs
El trabajo en equipo es crucial. Lo quese registra como equipo debe decidirse en conjunto. Al igual que escribir registros o decidir la ubicación de un registro, definir qué se debe registrar es otra decisión clave. Al administrar un equipo de desarrolladores, es vital definir los factores importantes juntos.
La decisión debe tomarse de acuerdo con lo que se conoce como posible área problemática. Cualquier flujo crítico que pueda ocurrir dentro de la aplicación y que pueda predecirse con anticipación debe estar registrado. La clave es poder evitar problemas. Cuando se usan con prudencia, los logs son útiles para prevenir daños con anticipación.
Limitarte asolucionar problemas no es (tan) divertido
La predicción de posibles problemas es sin duda una de las necesidades más importantes a la hora de realizar los logs. Sin embargo, existen otras razones para agregarlos. Se pueden agregar ciertos logs por razones comerciales ode administración, como realizar un seguimiento de eventos específicos, tales como el inicio de sesión o cuando los usuarios editan su cuenta.
También se pueden utilizarpara perfilar y cronometrar determinadas partes delcódigo. Las estadísticas se pueden tomar de los logs dentro de la aplicación, por ejemplo cuando suceden ciertos acontecimientos. Esto puede ser útil para al equipo a la hora de detectar comportamientos o entender resultados.
La vida con los logs
Entonces, ¿para qué estás creando logs si no los estás usando? Es una pregunta que se está volviendo cada vez más frecuente a medida que nos damos cuenta de que los logs no son todo lo que solíamos creer que eran. No los dejes de lado todavía, pero tal vez sea el momento de considerar el uso de herramientas que puedan brindarte los datos que necesitas para depurar de manera fácil y eficiente, sin necesidad de querer golpearte la cabezacontra la pared mientras intentas hacerlo.
Los depuradores de producción en vivo (live production de buggers), como Rookout, hacen precisamente esto. En lugar de escribir líneas de registro interminables para poder volver atrás y obtener la información que necesitas, puedes incluir un punto de interrupción constante y obtener los datos que necesitas al instante. Tan simple como eso. Así que haz un descanso, tómate otro café y una chocolatina, y disfruta de una feliz sesión de depuración.
Traduciso por : Mireia Alba Kesti Izquierdo