Log de Execução
Ir para LogsOs logs são uma maneira muito poderosa de rastrear a execução de sua automação e coletar métricas.
Os logs estão disponíveis para visualização e download através do menu Log de Execução.
Ao selecionar um log para visualizar, você pode filtrar por data e baixar imediatamente um arquivo CSV, JSON ou Excel dos seus dados.
Dica
Explore o para obter exemplos de código que facilitam as manipulações de logs, acesse e aprenda como criar uma nova entrada de log, buscar dados de log, baixar como CSV e deletar um log inteiro via código.
Os snippets gerados estão disponíveis nas linguagens Python, Java, JavaScript e TypeScript.
Importante
Para visualizar os exemplos de código, primeiro você precisará criar uma estrutura de log.
Criar log usando o BotCity Maestro¶
Através da interface do BotCity Maestro, você pode criar e manipular logs personalizados para cada uma de suas necessidades.
Clicar no botão Novo log o levará à tela de criação de log, onde você pode definir o label do log, que é o ID exclusivo a ser usado ao interagir com este log através do SDK ou API do BotCity Maestro, bem como as colunas.
Você pode criar quantos logs desejar para melhor organizar seus dados e gerenciar suas automações.
Como criar uma entrada de log usando o Maestro SDK¶
Você pode facilmente criar uma nova entrada de log usando o Maestro SDK no código da sua automação.
Aviso
Para conseguir criar uma nova entrada de log via código, é necessário que a estrutura do log já esteja criada no Maestro.
Instalação do SDK¶
Caso você ainda não tenha a dependência instalada, basta seguir essas instruções:
Importante
Além de instalar, lembre-se de incluir a dependência no arquivo requirements.txt
do bot.
<repositories>
<repository>
<id>nexus-botcity-public</id>
<url>https://devtools.botcity.dev:8081/repository/botcity-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<dependencies>
<!-- Your other dependencies -->
<dependency>
<groupId>dev.botcity</groupId>
<artifactId>maestro-sdk</artifactId>
<version>2.0.3</version>
</dependency>
</dependencies>
Importando o SDK¶
Após a instalação, basta importar a dependência e instanciar o Maestro SDK:
# Importando a dependência do Maestro SDK
from botcity.maestro import *
# Desabilitando erros caso não exista conexão com o Maestro
BotMaestroSDK.RAISE_NOT_CONNECTED = False
# Instanciando o Maestro SDK
maestro = BotMaestroSDK.from_sys_args()
# Buscando os detalhes da tarefa atual sendo executada
execution = maestro.get_execution()
// Importando a dependência do Maestro SDK
const { BotMaestroSdk } = require('@botcity/botcity-maestro-sdk')
// Obtendo parâmetros passados pelo Runner
const args = process.argv.slice(2)
const [server, taskid, token] = args
// Login com as informações da página Amb. Desenvolvedor
const maestro = new BotMaestroSdk()
maestro.login("YOUR_SERVER_HERE", "YOUR_USER_HERE", "YOUR_KEY_HERE")
// Buscando os detalhes da tarefa atual sendo executada
const executionTask = await maestro.getTask(taskid)
// Importando a dependência do Maestro SDK
import { BotMaestroSdk } from '@botcity/botcity-maestro-sdk'
// Obtendo parâmetros passados pelo Runner
const args = process.argv.slice(2)
const [server, taskid, token] = args
// Login com as informações da página Amb. Desenvolvedor
const maestro: BotMaestroSdk = new BotMaestroSdk()
maestro.login("YOUR_SERVER_HERE", "YOUR_USER_HERE", "YOUR_KEY_HERE")
// Buscando os detalhes da tarefa atual sendo executada
const executionTask: Task = await maestro.getTask(taskid)
Criando uma nova entrada de log¶
// Definindo dia e hora de execução
String timestamp = new SimpleDateFormat("yyyy-MM-dd_HH-mm").format(new java.util.Date());
// Criando uma nova entrada de log no Maestro.
Map<String,Object> values = new HashMap<String,Object>();
values.put("timestamp", timestamp);
values.put("records", "10");
values.put("status", "SUCCESS");
maestro.newLogEntry("logLabel", values);
Código completo¶
from botcity.core import DesktopBot
from botcity.maestro import *
# Importando biblioteca datetime para definir timestamp da execução.
import datetime
# Desabilitando erros caso não exista conexão com o Maestro
BotMaestroSDK.RAISE_NOT_CONNECTED = False
def main():
maestro = BotMaestroSDK.from_sys_args()
execution = maestro.get_execution()
# Criando uma nova entrada de log no Maestro.
maestro.new_log_entry(
activity_label="ResultsLog",
values = {
"timestamp": datetime.datetime.now().strftime("%Y-%m-%d_%H-%M"),
"records": "10",
"status": "SUCCESS"
}
)
bot = DesktopBot()
# Implemente aqui a sua lógica...
...
def not_found(label):
print(f"Element not found: {label}")
if __name__ == '__main__':
main()
import dev.botcity.framework.bot.DesktopBot;
import dev.botcity.maestro_sdk.BotExecutor;
import dev.botcity.maestro_sdk.BotMaestroSDK;
import dev.botcity.maestro_sdk.model.AlertType;
import dev.botcity.maestro_sdk.runner.BotExecution;
import dev.botcity.maestro_sdk.runner.RunnableAgent;
public class FirstBot extends DesktopBot implements RunnableAgent
{
public FirstBot() {
try {
setResourceClassLoader(this.getClass().getClassLoader());
} catch(Exception e) {
e.printStackTrace();
}
}
@Override
public void action(BotExecution botExecution) {
try {
BotMaestroSDK maestro = new BotMaestroSDK();
maestro.login(botExecution);
// Definindo dia e hora de execução
String timestamp = new SimpleDateFormat("yyyy-MM-dd_HH-mm").format(new java.util.Date());
// Criando uma nova entrada de log no Maestro.
Map<String,Object> values = new HashMap<String,Object>();
values.put("timestamp", timestamp);
values.put("records", "10");
values.put("status", "SUCCESS");
maestro.newLogEntry("ResultsLog", values);
// Implemente aqui a sua lógica...
...
} catch(Exception e) {
e.printStackTrace();
}
}
private void notFound(String label) {
System.out.println("Element not found: "+label);
}
public static void main(String[] args) {
BotExecutor.run(new FirstBot(), args);
}
}
const main = async () => {
const { BotMaestroSdk } = require('@botcity/botcity-maestro-sdk')
const args = process.argv.slice(2)
const [server, taskid, token] = args
const maestro = new BotMaestroSdk()
maestro.login("YOUR_SERVER_HERE", "YOUR_USER_HERE", "YOUR_KEY_HERE")
const executionTask = await maestro.getTask(taskid)
// Criando uma nova entrada de log no Maestro.
await maestro.logEntry(
"ResultsLog",
{
timestamp: new Date().toISOString(),
records: "10",
status: "SUCCESS"
}
)
}
main()
const main = async () => {
import { BotMaestroSdk } from '@botcity/botcity-maestro-sdk'
const args = process.argv.slice(2)
const [server, taskid, token] = args
const maestro: BotMaestroSdk = new BotMaestroSdk()
maestro.login("YOUR_SERVER_HERE", "YOUR_USER_HERE", "YOUR_KEY_HERE")
const executionTask: Task = await maestro.getTask(taskid)
// Criando uma nova entrada de log no Maestro.
await maestro.logEntry(
"ResultsLog",
{
timestamp: new Date().toISOString(),
records: "10",
status: "SUCCESS"
}
)
}
main()
Dica
Consulte as outras operações que podemos fazer com logs utilizando o BotCity Maestro SDK e BotCity Maestro API.