Saltar a contenido

Logs

El Log de Ejecución es una forma muy poderosa de registrar salidas, rastrear la ejecución y recopilar métricas de tu automatización. En esta sección encontrarás cómo realizar manipulaciones de Logs a través del SDK.

Orquestador BotCity

También puedes hacer uso de la funcionalidad de Log de Ejecución directamente en la plataforma del Orquestador BotCity.

Consulta más en:

Crear un log

Puedes crear un Log personalizado para recopilar datos de ejecución de tareas.

Para crear un nuevo Log, necesitas la siguiente información:

  • Label: identificador único del Log a crear.
  • Columnas: Lista de columnas que componen el Log, definidas con la clase Column:
    • name: Nombre descriptivo mostrado en el Orquestador BotCity.
    • label: Identificador único para esta columna en el Log.
    • width: (opcional) Ancho sugerido en píxeles.

¡Atención!

El SDK proporciona la clase Column que ayuda a crear la lista de columnas del Log.

Consulta un ejemplo de creación de Log:

# Crea una lista de columnas
columnas = [
    Column(name="# Registros", label="registros"),
    Column(name="Estado", label="estado"),
]

# Crea un nuevo log
maestro.new_log(
    activity_label="logLabel",
    columns=columnas
)
// Crea una lista de columnas
List<Column> columns = Arrays.asList(
    new Column("# Registros", "registros", 200),
    new Column("Estado", "estado", 100)
);

// Crea un nuevo log
maestro.newLog("logLabel", columns);
// Crea una lista de columnas
const columns = [
    new Column("# Registros", "registros", 300),
    new Column("Estado", "estado", 300),
]

// Crea un nuevo log
await maestro.createLog("logLabel", columns);
// Crea una lista de columnas
const columns: Column[] = [
    new Column("# Registros", "registros", 300),
    new Column("Estado", "estado", 300),
]

// Crea un nuevo log
const log: Log = await maestro.createLog("logLabel", columns);
using Dev.BotCity.MaestroSdk.Model.Log;

// Crea una lista de columnas
List<Column> columns = new List<Column>
{
    new Column("# Registros", "registros", 200),
    new Column("Estado", "estado", 100)
};

// Crea un nuevo log
Log log = await maestro.NewLogAsync("logLabel", columns);

Crear entradas de Log

Con el Log creado, cada entrada de Log registra una nueva fila con datos recopilados por la automatización.

Para crear una entrada de Log, necesitas la siguiente información:

  • Label: identificador único del Log ya creado.
  • Valores: clave (label de la columna) y valor basados en las columnas creadas.

Consulta un ejemplo de entrada de Log:

maestro.new_log_entry(
    activity_label="logLabel",
    values = {
        "registros": "10",
        "estado": "SUCCESS"
    }
)
Map<String,Object> values = new HashMap<String,Object>();
values.put("registros","10");
values.put("estado","SUCCESS");

maestro.newLogEntry("logLabel", columns);
await maestro.logEntry(
    "logLabel",
    {
        registros: "10",
        estado: "SUCCESS"
    }
)
await maestro.logEntry(
    "logLabel",
    {
        registros: "10",
        estado: "SUCCESS"
    }
)
var newEntry = new Dictionary<string, object>
{
    { "registros", "10"},
    { "estado", "SUCCESS" },
};

await maestro.NewLogEntryAsync("logLabel", newEntry);

¿Qué tipos de valores son aceptados?

Los Logs registran información de salida para el seguimiento de la ejecución. Por lo tanto, los valores pasados a cada columna deben ser objetos JSON serializable.

Para el envío de datos más complejos, consulta la opción: Archivos de resultado.

Buscar datos de Log

Puedes obtener los registros de log filtrados por fecha.

Para buscar un Log, necesitas la siguiente información:

  • Label: identificador único del Log ya creado.
  • Fecha: fecha inicial para filtrar la búsqueda de los registros.

Filtro de Fecha

El parámetro date debe usar el formato DD/MM/YYYY. Si date no se indica, se recuperarán todos los datos del log.

Consulta el ejemplo de implementación:

# Obtén la fecha de inicio como 30 días atrás
instante = (datetime.datetime.now() - datetime.timedelta(days=30))
fecha = instante.strftime("%d/%m/%Y")

# Obtén los datos del log
datos = maestro.get_log(activity_label="logLabel", date=fecha)
// Obtén la fecha de inicio como 30 días atrás
Instant instante = Instant.now().minus(30, ChronoUnit.DAYS);
Date fecha = Date.from(instante);

// Recupera los datos del log
List<Row> datos = maestro.getLog("logLabel", fecha);
const datos = await maestro.fetchDataLog("logLabel", 30)
const datos: DataLog[] = await maestro.fetchDataLog("logLabel", 30)
DateTime now = DateTime.Now;
DateTime fechaAnterior = now.AddDays(-30);
string fechaFormateada = fechaAnterior.ToString("dd/MM/yyyy");

// Obtén los datos del log
List<Entry> entries = await maestro.GetLogAsync("logLabel", DateTime.Now);

Descargar como CSV

Puedes obtener los registros de Log y guardarlos como un archivo .CSV.

Consulta el ejemplo:

# Aún no implementado
// Define los días de filtro para la búsqueda
int dias = 30;

// Define la ruta para guardar el archivo
File archivoLog = new File("<ruta para guardar el archivo>/log.csv");

// Recupera los datos del log
byte[] datos = maestro.getLogFile("logLabel", dias);

// Guarda en disco
Files.write(datos, archivoLog);
// Define la ruta para guardar el archivo
const rutaArchivo = "log.csv"

// Define los días de filtro para la búsqueda
const dias = 30

const datos = await maestro("logLabel", rutaArchivo, dias)
// Define la ruta para guardar el archivo
const rutaArchivo: string = "log.csv"

// Define los días de filtro para la búsqueda
const dias: number = 30

const datos: Buffer = await maestro("logLabel", rutaArchivo, dias)
// Aún no implementado

Eliminar un Log completo

Puedes eliminar un Log completo junto con todos sus registros de forma irreversible.

¡Atención!

Esta operación eliminará TODO el historial de registros del Log y no podrá revertirse.

Consulta un ejemplo de cómo eliminar el Log:

maestro.delete_log(activity_label="logLabel")

Roadmap

Aún no disponible.

await maestro.deleteLog("logLabel")
await maestro.deleteLog("logLabel")
await maestro.DeleteLogAsync("logLabel");