Ir para o conteúdo

Logs

Os logs são uma excelente maneira de acompanhar uma execução de bot e fornecer informações perspicazes para operação e monitoramento.

O BotCity Maestro oferece uma implementação de log muito flexível, muito fácil de usar e criar o log que melhor se encaixe no seu caso de uso.

Você pode criar quantos logs personalizados desejar para melhor organizar seus dados e gerenciar suas automações.

Nas seções a seguir, mostraremos como criar um log, inserir entradas de log e excluir um log.

Importante

Nos métodos abaixo, o parâmetro automation label se referirá ao label do log que foi criado.

Você pode encontrar mais detalhes na seção Logs.

Criando um log

Para criar um novo log para uma automação, precisamos fornecer as seguintes informações:

  • Label de automação
  • Lista de colunas

O SDK fornece a classe Columns, que ajuda a criar novas entradas.

Uma instância de Column contém as seguintes informações:

  • name: Texto a ser exibido no Portal Web BotCity Maestro.
  • label: Identificador unico para esta coluna neste log
  • width: Largura sugerida em pixels.

Aqui está como podemos criar um novo log:

# Crie uma lista de colunas
colunas = [
    Column(name="DataHora", label="timestamp", width=300),
    Column(name="# Registros", label="registros", width=200),
    Column(name="Status", label="status", width=100),
]

# Crie um novo log
maestro.new_log(
    "labelAutomacao",
    columns
)
// Crie uma lista de colunas
List<Column> columns = Arrays.asList(
    new Column("DataHora", "timestamp", 300),
    new Column("# Registros", "registros", 200),
    new Column("Status", "status", 100)
);

// Crie um novo log
maestro.newLog("labelAutomacao", columns);
// Crie uma lista de colunas
const columns = [
    new Column("DataHora", "timestamp", 300),
    new Column("# Registros", "registros", 300),
    new Column("Status", "status", 300),
]

// Crie um novo log
await maestro.createLog("labelAutomacao", columns);
// Crie uma lista de colunas
const columns: Column[] = [
    new Column("DataHora", "timestamp", 300),
    new Column("# Registros", "registros", 300),
    new Column("Status", "status", 300),
]

// Crie um novo log
const log: Log = await maestro.createLog("labelAutomacao", columns);

Criando novas entradas de log

Com o seu novo log brilhante pronto, é hora de criar algumas entradas de log.

Aqui está como você pode inserir novas entradas de log:

import datetime

maestro.new_log_entry(
    activity_label="labelAutomacao",
    values = {
        "timestamp": datetime.datetime.now().strftime("%Y-%m-%d_%H-%M"),
        "registros": "10",
        "status": "SUCCESS"
    }
)
String timestamp = new SimpleDateFormat("yyyy-MM-dd_HH-mm").format(new java.util.Date());

Map<String,Object> values = new HashMap<String,Object>();
values.put("timestamp", timestamp);
values.put("registros","10");
values.put("status","SUCCESS");

maestro.newLogEntry("labelAutomacao", columns);
await maestro.logEntry(
    "labelAutomacao",
    {
        timestamp: new Date().toISOString(),
        registros: "10",
        status: "SUCCESS"
    }
)
await maestro.logEntry(
    "labelAutomacao",
    {
        timestamp: new Date().toISOString(),
        registros: "10",
        status: "SUCCESS"
    }
)

Buscar dados de log

A recuperação de dados de log é tão fácil quanto criar entradas de log.

O argumento date atua como um filtro para a data inicial da recuperação do log.

Note

O parâmetro date deve usar o formato DD/MM/YYYY. Se date não for informado, todos os dados do log serão recuperados.

# Obtenha a data de início como 30 dias atrás
instante = (datetime.datetime.now() - datetime.timedelta(days=30))
data = instante.strftime("%d/%m/%Y")

# Obtenha os dados do log
dados = maestro.get_log(activity_label="labelAutomacao", date=data)
// Obtenha a data de início como 30 dias atrás
Instant instante = Instant.now().minus(30, ChronoUnit.DAYS);
Date data = Date.from(instante);

// Recupere os dados do log
List<Row> dados = maestro.getLog("labelAutomacao", data);
const dados = await maestro.fetchDataLog("labelAutomacao", 30)
const dados: DataLog[] = await maestro.fetchDataLog("labelAutomacao", 30)

Baixando como CSV

Roteiro

Não disponível ainda.

// Defina dias de filtro para pesquisar
int dias = 30;

// Defina o caminho para salvar o arquivo
File arquivoLog = new File("<caminho para salvar arquivo>/log.csv");

// Recupere os dados do log
byte[] dados = maestro.getLogFile("logLabel", dias);

// Salve no disco
Files.write(dados, arquivoLog);
// Defina o caminho para salvar o arquivo
const caminhoArquivo = "log.csv"

// Defina dias de filtro para pesquisar
const dias = 30

const dados = await maestro("labelAutomacao", caminhoArquivo, dias)
// Defina o caminho para salvar o arquivo
const caminhoArquivo: string = "log.csv"

// Defina dias de filtro para pesquisar
const dias: number = 30

const dados: Buffer = await maestro("labelAutomacao", caminhoArquivo, dias)

Excluindo um log inteiro

Se por algum motivo, você precisar remover completamente o log junto com todas as suas entradas, você pode fazer isso usando o comando abaixo:

Warning

Esta operação apagará TODO o histórico de logs e não poderá ser revertido.

maestro.delete_log(activity_label="labelAutomacao")

Roadmap

Não disponível ainda.

await maestro.deleteLog("labelAutomacao")
await maestro.deleteLog("labelAutomacao")