Hola, por acĆ” Danilo š
Bienvenido a esta nueva edición de Robotipy. En este artĆculo explicaremos como leer los logs de rocketbot, para que puedas entender los errores y puedas crear tus propios logs.
Si quieres recibir estas publicaciones desde tu correo electrónico, te invito a suscribirte.
Una de las habilidades mÔs importantes y a la vez complicada al desarrollar, es saber como debuggear y resolver errores. Se dice que un programador pasa mas tiempo leyendo código que programando y en el mundo de RPA no es tan diferente
ĀæQue son los logs?
Los logs son un registro de todas las actividades que realiza tu robot y se genera cada vez que se ejecuta. En estos registros se guarda información de los comandos, errores y mensajes dejados por el desarrollador
En informÔtica, se usa el término registro, log o historial de log para referirse a la grabación secuencial en un archivo o en una base de datos de todos los acontecimientos (eventos o acciones) que afectan a un proceso particular (aplicación, actividad de una red informÔtica, etc.). De esta forma constituye una evidencia del comportamiento del sistema.
En Rocketbot, leer los logs es bastante sencillo y tenemos varias formas para hacerlo, podemos leerlos desde:
š Terminal de Rocketbot
š Archivo .log
šAddon Logs Viewer
Los tres métodos muestran la misma información. La diferencia es la forma en la que accedes a cada uno y como te muestra la información.
Logs de Rocketbot
Los logs de rocketbot se guardan en la carpeta rocketbot/logs y se separan en diferentes carpetas según la fecha de creación del archivo. Dentro de estas carpetas, encontrarÔs cada archivo nombrado según la hora de creación log_yyyymmdd_hhmmss.log
Si abres cualquier log, verĆ”s lĆneas como en la imagen de abajo donde cada lĆnea es un registro de la ejecución de cada comando.
š”Este post estĆ” basado en las versiones de Rocketbot 2023 o superior. Puede haber diferencias con versiones anteriores.
Cada registro o lĆnea dentro del archivo .log lo podemos dividir en 8 partes
š§ Timestamp o fecha y hora de ejecución
š¤ Origen del log ā Este puede ser Rocketbot si es un log de un comando o robot_message si es un log generado por el robot
šļøTipo de log ā Conocido tambiĆ©n como nivel de error. Permite diferenciar si es un mensaje de debug, un warning, error, etc. Puedes revisar en la documentación de python Loggin-level
š¤ Nombre del robot ejecutado ā Es el nombre del robot que contiene al comando que se estĆ” ejecutando
š Linea del comando en el robot ā Es la lĆnea donde se encuentra el comando que se ejecuta, tomando en cuenta el nivel de anidación
š·ļøGrupo y Nombre interno del comando ā AcĆ” se indica el nombre y sección a nivel interno de rocketbot. El identificador que tiene rocketbot para sus servicios y comandos. Por ejemplo
rpaweb : sendkeyweb ā sección web : comando enviar texto web
šŖŖ Identificador del comando en el robot ā Este es el identificador Ćŗnico del comando dentro del robot. Es un uuid que te permite encontrar un comando especĆfico
šļø ParĆ”metros, datos e información del comando ā Esta parte del log es variable y depende de la información del comando a ejecutar. La mayorĆa de los módulos muestran su información en formato diccionario de python y algunos comandos nativos lo muestran secuencial. Por ejemplo
El comando abrir navegador muestra primero el navegador que se abrirƔ y luego un diccionario con los parƔmetros ingresados:
chrome - {"url":"https://blog.robotipy.com/p/como-mejorar-como-rpa-developer","id_driver":"","profile":""}
El comando limpiar variables muestra un diccionario con todos los parÔmetros incluido el nombre del módulo y el identificador del comando:
{"module_name":"System++","module":"cleanVars","vars":"Iterable_Csv"}
Logs en la Terminal de Rocketbot
La terminal de rocketbot nos muestra mÔs información que solo los logs, por lo que es importante conocer como funciona
La terminal de Rocketbot es esa ventana negra que se abre cuando ejecutas la aplicación o ejecutas un robot.
La información en esta terminal la podemos dividir en dos partes.
Información de Studio ā Al iniciar, muestra información de la configuración de Rocketbot como el puerto, la ruta de los logs o información de tu licencia. Y mientras vas interactuando con Studio, va mostrando información, como el robot guardado, los robots exportados, etc
Información de la ejecución ā Cuando ejecutas un robot, la terminal muestra ademas del log de cada comando, otro tipo de información, como el tiempo que demora en ejecutar el robot, warning generados por alguna librerĆa de python, mensajes de debug de algĆŗn comando, entre otras cosas
Addon Log Viewer
Otra forma de visualizar los logs, es utilizando la extensión o addon llamado Logs Viewer. Esta extensión se encuentra en la sección de Addons, en la parte derecha de Rocketbot
Si das click en la extensión, se abrirÔ una nueva pestaña en el navegador con todos los logs separados por carpeta, de igual forma como se encuentra en la carpeta logs, ordenados desde el último al mÔs antiguo.
Esta extensión, te permite ver cada tipo de log con diferentes colores para que puedas visualizar de forma rÔpida los errores o los logs generados por tu robot. AdemÔs, cuenta con dos botones para exportarlo como archivo xlsx y otro para abrir la carpeta logs.
Esta forma tiene la desventaja que no se actualiza en tiempo real, por lo que necesitas recargar la pÔgina cuando finalice la ejecución de tu robot
šāāļøSi te interesa que haga un vĆdeo de como crear tus propios addons para Rocketbot Studio, dejame un comentario diciendo āMe interesa crear un addonā
Como crear un log personalizado
Desde la versión 2023.03.20, ya no necesitas crear tus propios módulos de logs o subrobots para crear mensajes de logs personalizados en tus robot.
Con el comando Mensaje Log, puedes agregar información a los logs de Rocketbot y asà tener en un solo lugar tus registros o checkpoints con la información de los comandos ejecutados.
El comando Mensaje Log se encuentra en la sección Sistema y recibe solo dos parÔmetros para funcionar
Mensaje ā El mensaje de que quieres escribir en los logs. Puede ser un texto o una variable
Nivel ā El tipo de log que quieres que se muestre. Los niveles disponibles pueden ser :
trace: Utilizado para información detallada de depuración
info: Utilizado para proporcionar información general sobre la ejecución del programa
warn: Se utiliza para resaltar posibles problemas o advertencias
error: Utilizado para registrar errores que se producen durante la ejecución del programa
fatal: Se utiliza para registrar errores crĆticos que conducen a la finalización del programa
Al ejecutarse este comando, verƔs en los logs lo siguiente:
2023-08-22 00:22:08.100640 - rocketbot - INFO - request: test2 : line 2 - rpasystem : log_message Ā id: 05886cd5-7a45-47f7-76eb-e95eb4590f72 - warn - Los archivos no se encuentran en la carpeta principal
2023-08-22 00:22:08.101642 - robot_message - WARN - Los archivos no se encuentran en la carpeta principal
Como guardar el error en una varible
En algunos casos podrĆas necesitas el mensaje del error que ocurre, ya sea para enviarlo por algĆŗn medio o tomar una decisión dentro de un catch.
En Rocketbot no tienes un comando para extraer el error literal, sino que puedes obtener el Ćŗltimo status reportado por un comando y este contendrĆ” el mensaje del error
{'status': 'False', 'message': 'SystemError: Ha ocurrido un error en el robot', 'img': '', 'vars': [], 'ifs': [], 'extra': [], 'time': '0.00956273078918457'}
Para poder obtener el status, puedes usar alguna de estas dos formas
Uso de variable interna
Con el comando asignar variable puedes utilizar la variable interna rocketbot_last_status.
Para poder utilizarla tienes que escribirla entre simbolos de porcentajes y en el campo de Asignar resultado a variable tienes que indicar el nombre de la variable donde guardar el mensaje con el error (o el Ćŗltimo status)
Comando obtener Ćŗltimo status
En este comando solo tienes que ingresar la variable donde quieres guardar el Ćŗltimo status reportado por el comando y ya puedes acceder al mensaje del error.
Y eso es todo por hoy! Si te gustarĆa que escriba sobre algo en particular, creĆ© un chat donde podemos conversar y puedes comentarme cuales son los temas que te interesan. EstarĆ© escribiendo sobre los temas comentados en las siguientes ediciones