Log4j em Selenium: Como baixar e usar o arquivo de propriedades Log4j
O que รฉ o Log4j Selenium?
Log4j รฉ uma estrutura de registro (APIS) rรกpida, flexรญvel e confiรกvel escrita em Java desenvolvido no inรญcio de 1996. ร distribuรญdo sob o apache Licenรงa de software. Log4J foi portado para C, C++, C#, Perl, Python, linguagens Ruby e Eiffel. ร uma ferramenta usada para pequenas e grandes escalas Selenium Projetos de automaรงรฃo.
Por que usar Log4j?
- ร um cรณdigo aberto
- Com o Log4j, รฉ possรญvel armazenar os detalhes do fluxo do nosso Selenium Automaรงรฃo em um arquivo ou bancos de dados
- Log4j รฉ usado para projetos grandes e pequenos
- No Log4j, usamos instruรงรตes de log em vez de instruรงรตes SOPL no cรณdigo para saber o status de um projeto enquanto ele estรก em execuรงรฃo
Componentes Log4j
Madeireiros
ร responsรกvel por registrar informaรงรตes. Para implementar registradores em um projeto, as seguintes etapas precisam ser executadas
Crie uma instรขncia para a classe logger
A classe Logger รฉ uma Javautilitรกrio baseado em que possui todos os mรฉtodos genรฉricos jรก implementados para usar log4j
Defina o nรญvel Log4j
Principalmente, existem cinco tipos de nรญveis de log
- Todos โ Este nรญvel de registro registrarรก tudo (ativa todos os registros)
- DEBUG โ imprime as informaรงรตes de depuraรงรฃo e รฉ รบtil na fase de desenvolvimento
- INFO โ imprimir mensagem informativa que destaca o andamento da inscriรงรฃo
- AVISO โ imprime informaรงรตes sobre comportamento defeituoso e inesperado do sistema.
- ERRO โ imprime mensagem de erro que pode permitir que o sistema continue
- FATAL โ imprime informaรงรตes crรญticas do sistema que estรฃo causando falha no aplicativo
- DESLIGADO โ Sem registro
Anexos
ร usado para entregar LogEvents ao seu destino. Ele decide o que acontecerรก com as informaรงรตes de log. Em palavras simples, รฉ usado para gravar os logs em arquivo. A seguir estรฃo alguns tipos de Appenders
- ConsoleAppender registra na saรญda padrรฃo
- O anexador de arquivo imprime logs em algum arquivo
- Rolando o anexador de arquivo para um arquivo com tamanho mรกximo
Observaรงรฃo: Nas propriedades log4j podemos chamar o appender com qualquer nome. Existem outros anexadores tambรฉm, mas nos restringiremos a estes poucos.
Layouts
ร responsรกvel por formatar as informaรงรตes de log em diferentes estilos.
A classe Logger fornece mรฉtodos diferentes para lidar com atividades de registro em log. Ele fornece dois mรฉtodos estรกticos para obter um objeto Logger.
Public static Logger getRootLogger() Public static Logger getLogger(String name)
Como o log4j estรก configurado?
Para configurar o log4j, temos que decidir qual anexador implementar. Conseqรผentemente, os parรขmetros do anexador serรฃo definidos.
- Usaremos o nรญvel DEBUG e RollingFileAppender
- Faremos duas configuraรงรตes ou logs,
- Primeiro: root logger, que gravarรก todos os logs gerados pelo sistema no nome do arquivo, ou seja Selenium.Histรณrico
- Segundo: gravarรก as informaรงรตes geradas pelos comandos manuais no cรณdigo no nome do arquivo- Manual.logs
#Registrador raiz
log4j.rootLogger=DEBUG,file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=D:\\Guru99\\src\\Selenium.logs
log4j.appender.file.maxFileSize=900KB
log4j.appender.file.maxBackupIndex=5
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c<strong>{1}</strong>:%L - %m%n
log4j.appender.file.Append=false
#Registros de aplicativos
log4j.logger.devpinoyLogger=DEBUG, dest1
log4j.appender.dest1=org.apache.log4j.RollingFileAppender
log4j.appender.dest1.maxFileSize=900KB
log4j.appender.dest1.maxBackupIndex=6
log4j.appender.dest1.layout=org.apache.log4j.PatternLayout
log4j.appender.dest1.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss} %c %m%n
log4j.appender.dest1.File=D:\\ Guru99\\src\\Manual.logs
log4j.appender.dest1.Append=false
No exemplo acima, configuramos o log4j para efetuar login em dois arquivos diferentes nomeados como Selenium.log e Manual.log.
- file e dest1 sรฃo os dois identificadores.
- โArquivoโ รฉ usado para fornecer o nome do arquivo no qual os logs serรฃo salvos
- โmaxFileSizeโ รฉ usado para configurar o tamanho mรกximo do arquivo de log. Quando o arquivo atingir esse tamanho, um novo arquivo serรก criado com o mesmo nome e o nome do arquivo antigo serรก adicionado como um รญndice a ele.
- โmaxBackupIndexโ รฉ usado para configurar o nรบmero mรกximo de arquivos para backup.
- โlayoutโ รฉ usado para definir o formato do arquivo de log.
- โAppendโ รฉ usado para definir a funรงรฃo de acrรฉscimo. Se estiver definido como falso, sempre que um novo arquivo for criado, em vez do arquivo antigo, serรก usado para registro
Como o log4j รฉ usado no script?
No cรณdigo, usamos โlogโ como uma variรกvel de referรชncia referenciando o mรฉtodo getLogger da classe Logger
Logger log = Logger.getLogger("devpinoyLogger");
Use a variรกvel de referรชncia โlogโ e o mรฉtodo de depuraรงรฃo para registrar as informaรงรตes que desejamos.
log.debug("--information--");
O que รฉ uma ferramenta LogExpert?
- A ferramenta LogExpert รฉ uma ferramenta para Windows desenvolvido para acompanhar os logs
- ร um visualizador de log gratuito e de cรณdigo aberto.
- ร uma ferramenta de anรกlise de logs com vรกrios recursos como pesquisa, filtragem, marcaรงรฃo e destaque dos logs
- Nos logs desta ferramenta, os arquivos sรฃo atualizados automaticamente quando abertos
- Nesta ferramenta, podemos abrir vรกrios arquivos de log em guias diferentes
- Tambรฉm podemos colocar comentรกrios nos favoritos, e existe uma tecla de atalho para navegar entre os diferentes favoritos. Tambรฉm podemos ver a lista completa de favoritos e navegar a partir daรญ
- Os atalhos da ferramenta sรฃo fornecidos no arquivo de ajuda para que possam ser encaminhados para a ferramenta.
Como usar o Log4j em Selenium
Passo 1) In Eclipse crie um novo projeto com o nome log4j_demo
Passo 2) Clique com o botรฃo direito em src -> Caminho de construรงรฃo -> Configurar caminho de construรงรฃo
Passo 3) Clique em Bibliotecas e Adicionar Biblioteca Log4J. Vocรช pode baixรก-lo em https://logging.apache.org/log4j/1.2/download.html
Passo 4) Crie um novo arquivo. Este arquivo incluirรก toda a configuraรงรฃo do log4j
- Clique com o botรฃo direito em src -> Novo -> Outro -> Geral -> Arquivo
- Dรช o nome do arquivo como โlog4j.propertiesโ
- Clique em Finish
Crie mais dois arquivos e dรช-lhes nomes como Selenium.logs e Manual.logs. Esses arquivos conterรฃo todos os logs criados pelo sistema e instruรงรตes registradas manualmente
Passo 5) Em log4j.properties copie toda a configuraรงรฃo.
Passo 6) Crie a classe principal:
- Clique com o botรฃo direito no pacote padrรฃo -> Novo -> Classe
- Dรช o nome da turma e clique em finalizar
Passo 7) Copie o seguinte cรณdigo para a classe principal
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.apache.log4j.Logger;
public class LoggingDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
WebDriver driver = new FirefoxDriver();
Logger log = Logger.getLogger("devpinoyLogger");
driver.get("https://healthunify.com/bmicalculator/");
log.debug("opening webiste");
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
log.debug("entring weight");
driver.findElement(By.name("wg")).sendKeys("87");
log.debug("selecting kilograms");
driver.findElement(By.name("opt1")).sendKeys("kilograms");
log.debug("selecting height in feet");
driver.findElement(By.name("opt2")).sendKeys("5");
log.debug("selecting height in inchs");
driver.findElement(By.name("opt3")).sendKeys("10");
log.debug("Clicking on calculate");
driver.findElement(By.name("cc")).click();
log.debug("Getting SIUnit value");
String SIUnit = driver.findElement(By.name("si")).getAttribute("value");
log.debug("Getting USUnit value");
String USUnit = driver.findElement(By.name("us")).getAttribute("value");
log.debug("Getting UKUnit value");
String UKUnit = driver.findElement(By.name("uk")).getAttribute("value");
log.debug("Getting overall description");
String note = driver.findElement(By.name("desc")).getAttribute("value");
System.out.println("SIUnit = " + SIUnit);
System.out.println("USUnit = " + USUnit);
System.out.println("UKUnit = " + UKUnit);
System.out.println("note = " + note);
driver.quit();
}
}
No cรณdigo acima, visitamos https://healthunify.com/bmicalculator/ e verifique a calculadora do IMC. O peso inserido รฉ 87KG e a altura รฉ 5 pรฉs e 10 polegadas. O script verifica a saรญda nas unidades SE, EUA e Reino Unido.
Usando Logger.getLogger(โdevpinoyLoggerโ) criamos logs no nรญvel do sistema
Usando o mรฉtodo log.debug, armazenamos dados em Manual.log
Passo 8) Execute o script. Abra o local do Manual e Selenium logs para verificar os dados de registro.
Como a ferramenta LogExpert pode ser usada para analisar logs
- Baixe a ferramenta em https://github.com/zarunbal/LogExpert . Vรก para a pasta de download do LogExpert
- Abra LogExpert.exe
- Clique em Arquivo -> Abrir e navegue atรฉ o caminho onde Manual.log e SeleniumArquivos .log sรฃo armazenados. Selecione o arquivo
- Selecione a opรงรฃo โSeguir caudaโ
Selecionar a opรงรฃo follow tail permite seguir os logs, o que significa que o LogExpert atualiza automaticamente o arquivo de log quando o script estรก em fase de execuรงรฃo. Se usarmos qualquer outro editor como o bloco de notas, teremos que fechar e reabrir o arquivo repetidamente para atualizar os logs. Mas com ExpertTool no modo Follow Tail isso nรฃo รฉ necessรกrio.
As imagens a seguir mostram o layout dos logs
Usando a ferramenta LogExpert, pode-se depurar logs criados pelo selenium webdriver como nesta ferramenta, uma vez que pode
- pesquise qualquer texto e expressรฃo regular,
- criar favoritos e comentรก-los e tambรฉm navegar entre os favoritos, o que nรฃo รฉ possรญvel em nenhuma outra ferramenta,
- Filtre os logs e pesquise intervalos de texto e tambรฉm pode aplicar outro filtro aos logs filtrados anteriores,
- Destaque linhas diferentes com base em algumas palavras.
Esta ferramenta tambรฉm ajuda a particionar os dados em colunas diferentes.











