O que é Log4j?
Log4j é um framework de registro rápido, flexível e confiável (APIS) escrito em Java, desenvolvido no início de 1996. Ele é distribuído sob a Licença de Software Apache. Log4J foi portado para as linguagens C, C ++, C #, Perl, Python, Ruby e Eiffel. É uma ferramenta usada para projetos de Automação Selenium de pequena a grande escala.
Por que usar Log4j?
- É um código aberto
- Com Log4j, é possível armazenar os detalhes do fluxo de nosso Selenium Automation 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á sendo executado
Log4j tem três componentes principais
- Loggers : são responsáveis por registrar as informações. Para implementar madeireiros em um projeto, as seguintes etapas precisam ser executadas -
- Crie uma instância para a classe logger : A classe Logger é um utilitário baseado em Java que possui todos os métodos genéricos já implementados para usar o log4j
- Defina o nível Log4j : basicamente, existem cinco tipos de níveis de log
- Todos - este nível de registro irá registrar tudo (ele ativa todos os registros)
- DEBUG - imprime as informações de depuração e é útil no estágio de desenvolvimento
- INFO - imprime mensagem informativa que destaca o andamento da aplicação
- WARN - imprime informações sobre comportamento defeituoso e inesperado do sistema.
- ERROR - imprime mensagem de erro que pode permitir que o sistema continue
- FATAL - imprime informações críticas do sistema que estão causando o travamento do aplicativo
- DESLIGADO - Sem registro
- Anexadores : é usado para entregar LogEvents ao seu destino. Ele decide o que acontecerá com as informações de log. Em palavras simples, ele é usado para gravar os logs em arquivo. A seguir estão alguns tipos de Anexos
- Registros do ConsoleAppender para a saída padrão
- O anexador de arquivo imprime registros em algum arquivo
- Rolling file appender a um arquivo com tamanho máximo
Nota: Nas propriedades log4j, podemos chamar appender com qualquer nome. Existem outros apêndices também, mas iremos nos restringir a estes poucos.
- Layouts : é responsável por formatar as informações de registro em diferentes estilos.
A classe Logger fornece diferentes métodos para lidar com atividades de log. Ele fornece dois métodos estáticos para obter um objeto Logger.
Public static Logger getRootLogger ()Public static Logger getLogger (nome da string)
Como o log4j é configurado?
Para configurar o log4j, temos que decidir qual anexador implementar. Assim, os parâmetros do appender serão definidos.
- Usaremos o nível DEBUG e RollingFileAppender
- Faremos duas configurações ou logs,
- Primeiro: logger root, que gravará todos os logs gerados pelo sistema no nome do arquivo, ou seja, Selenium.logs
- Segundo: gravará as informações geradas por comandos manuais no código no nome do arquivo- Manual.logs
- O layout será PatternLayout
#Root logger
log4j.rootLogger = DEBUG, arquivolog4j.appender.file = org.apache.log4j.RollingFileAppenderlog4j.appender.file.File = D: \\ Guru99 \\ src \\ Selenium.logslog4j.appender.file.maxFileSize = 900KBlog4j.appender.file.maxBackupIndex = 5log4j.appender.file.layout = org.apache.log4j.PatternLayoutlog4j.appender.file.layout.ConversionPattern =% d {ABSOLUTE}% 5p% c {1} :% L -% m% nlog4j.appender.file.Append = false
# Logs de aplicativo
log4j.logger.devpinoyLogger = DEBUG, dest1log4j.appender.dest1 = org.apache.log4j.RollingFileAppenderlog4j.appender.dest1.maxFileSize = 900KBlog4j.appender.dest1.maxBackupIndex = 6log4j.appender.dest1.layout = org.apache.log4j.PatternLayoutlog4j.appender.dest1.layout.ConversionPattern =% d {dd / MM / aaaa HH: mm: ss}% c% m% nlog4j.appender.dest1.File = D: \\ Guru99 \\ src \\ Manual.logslog4j.appender.dest1.Append = false
No exemplo acima, configuramos o log4j para fazer login em dois arquivos diferentes nomeados como Selenium.log e Manual.log.
- arquivo e dest1 são os dois identificadores.
- "Arquivo" é usado para dar 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 este 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 for 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 que faz referência ao 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 ("- informações--");
O que é uma ferramenta LogExpert?
- A ferramenta LogExpert é uma ferramenta para Windows desenvolvida para rastrear os logs
- É um visualizador de log gratuito e de código aberto.
- É uma ferramenta de análise de registro com vários recursos, como pesquisa, filtragem, marcação e destaque dos registros
- Nestes logs de ferramenta, os arquivos são atualizados automaticamente quando abertos
- Nesta ferramenta, podemos abrir vários arquivos de log em diferentes guias
- Também podemos colocar comentários nos favoritos, e existe a 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 consultados para a ferramenta.
Passos para usar Log4j com Selenium
Etapa 1) No Eclipse, crie um novo projeto com o nome log4j_demo
Etapa 2) Clique com o botão direito em src -> Caminho de construção -> Configurar caminho de construção
Etapa 2) Clique em Bibliotecas e Adicionar Biblioteca Log4J. Você pode baixá-lo em https://logging.apache.org/log4j/1.2/download.html
Etapa 3) Crie um novo arquivo. Este arquivo irá 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 Terminar
Crie mais dois arquivos e atribua-lhes nomes como Selenium.logs e Manual.logs. Esses arquivos conterão todos os logs criados pelo sistema e as declarações registradas manualmente
Etapa 4) Em log4j.properties copie toda a configuração.
Etapa 5) Crie a classe principal:
- Clique com o botão direito no pacote padrão -> Novo -> Classe
- Dê o nome da turma e clique em terminar
Etapa 6) 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 stub do método gerado automaticamenteDriver WebDriver = novo FirefoxDriver ();Logger log = Logger.getLogger ("devpinoyLogger");driver.get ("http://healthunify.com/bmicalculator/");log.debug ("abrindo webiste");driver.manage (). timeouts (). implicitlyWait (20, TimeUnit.SECONDS);log.debug ("peso entrante");driver.findElement (By.name ("wg")). sendKeys ("87");log.debug ("selecionando quilogramas");driver.findElement (By.name ("opt1")). sendKeys ("quilogramas");log.debug ("selecionando a altura em pés");driver.findElement (By.name ("opt2")). sendKeys ("5");log.debug ("selecionando a altura em polegadas");driver.findElement (By.name ("opt3")). sendKeys ("10");log.debug ("Clicando em calcular");driver.findElement (By.name ("cc")). click ();log.debug ("Obtendo valor SIUnit");String SIUnit = driver.findElement (By.name ("si")). GetAttribute ("valor");log.debug ("Obtendo valor USUnit");String USUnit = driver.findElement (By.name ("us")). GetAttribute ("value");log.debug ("Obtendo valor UKUnit");String UKUnit = driver.findElement (By.name ("uk")). GetAttribute ("valor");log.debug ("Obtendo a descrição geral");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 ("nota =" + nota);driver.quit ();}}
No código acima, visitamos http://healthunify.com/bmicalculator/ e verificamos a calculadora de IMC. O peso informado é de 87 kg e a altura é de 5 pés e 10 polegadas. O script verifica a saída nas unidades SE, EUA e Reino Unido.
Usando Logger.getLogger ("devpinoyLogger"), criamos registros de nível de sistema
Usando o método log.debug, armazenamos dados em Manual.log
Etapa 7) Execute o script. Abra a localização dos registros Manuais e Selenium para verificar os dados de registro.
Como a ferramenta LogExpert pode ser usada para analisar logs
- Baixe a ferramenta em http://logexpert.codeplex.com/. Vá para a pasta de download do LogExpert
- Abra LogExpert.exe
- Clique em Arquivo -> Abrir e navegue até o caminho onde os arquivos Manual.log e Selenium.log estão armazenados. Selecione o arquivo
- Selecione a opção "Seguir cauda"
Selecionar a opção follow tail permite o tailing de 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 novamente para atualizar os logs. Mas com o ExpertTool no modo Follow Tail, isso não é necessário.
As imagens a seguir mostram o layout dos registros
Usando a ferramenta LogExpert, pode-se depurar logs criados pelo selenium webdriver como nesta ferramenta, uma vez que pode
- procure qualquer texto e expressão regular,
- crie favoritos e comente-os e também pode navegar entre os favoritos, o que não é possível em nenhuma outra ferramenta,
- Filtre os logs e pesquise por intervalos de texto e também pode aplicar outro filtro aos logs filtrados anteriores,
- Destaque uma linha diferente com base em algumas palavras certas.
Essa ferramenta também ajuda a particionar os dados em diferentes colunas.