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
Nota: 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.