DEV Community

Cover image for LogCaptor: Simplificando o Teste de Logs em APIs REST Java
Diego de Sousa Brandão
Diego de Sousa Brandão

Posted on • Edited on

LogCaptor: Simplificando o Teste de Logs em APIs REST Java

Olá devs, nesse artigo eu quero falar sobre uma lib que conheci a pouco tempo e me ajudou em demasia no serviço ela se chama: LogCaptor, você encontra ela no maven repository neste link:
Maven Repository

Sobre a documentação é bem rica, você encontra no github neste link:
GitHub

Você deve estar se perguntando, ok Diego, mas do que se trata essa lib e, por que eu teria interesse nela?

Bem eu explico jovem mancebo, O LogCaptor é uma biblioteca Java que torna o teste de logs em APIs REST muito mais fácil e eficiente. Ele permite que você capture e valide logs de forma programática, o que pode ser extremamente útil para garantir que sua API esteja funcionando como esperado.

Benefícios do LogCaptor
Facilidade de uso: O LogCaptor é fácil de se usar. Você só precisa adicionar a biblioteca ao seu projeto e usar algumas anotações simples para capturar e validar logs.
Flexibilidade: O LogCaptor é flexível. Você pode capturar logs de qualquer nível de severidade e de qualquer fonte.
Precisão: O LogCaptor é preciso. Você pode ter certeza de que os logs que você captura são os mesmos que os logs que são gravados no console ou em um arquivo.

É muito fácil de se usar, eu provo usando um exemplo abaixo, para esse artigo eu criei um crud bem simples você pode fazer o clone dele direto aqui: Clone ou acessar o repositório aqui: Repositório

A API, se trata de um simples CRUD, para criar um funcionário contendo: id, nome, salário, idade e gênero, o foco é o teste:

Abaixo o service que iremos testar os logs:

Image description

Neste caso vamos realizar dois testes, um de sucesso e outro de erro, para avaliar os logs;

O primeiro caso irá verificar o log em caso de sucesso:

Image description

A saída, mostrando o log:

Image description

Teste efetuado com sucesso, agora um exemplo quando ocorre um erro:

Image description

A saída do log de erro:

Image description

Basicamente para realizar esses testes, eu tive que colocar apenas essas linhas de código:

Nos parênteses, você coloca a sua classe que irá testar os logs.

LogCaptor logCaptor = LogCaptor.forClass(EmployeeServiceImpl.class);
Enter fullscreen mode Exit fullscreen mode

E aqui abaixo apenas uma sugestão de uso, nesse link pode encontrar mais exemplos: GitHub Mas, basicamente o que estou fazendo é conferir se o log que inclui na minha classe service, está saindo de acordo, no caso o log.error se a mensagem está igual.

    assertThat(logCaptor.getLogs())
                .contains("Erro ao salvar funcionário: {}");
    }
Enter fullscreen mode Exit fullscreen mode

Claro que além disso, precisamos das lib no nosso pom.xml logo que inicei o artigo já te indiquei onde conseguir a lib mais atual e o tutorial, mas caso quiser:

MAVEN:

        <dependency>
            <groupId>io.github.hakky54</groupId>
            <artifactId>logcaptor</artifactId>
            <version>2.9.2</version>
            <scope>test</scope>
        </dependency>
Enter fullscreen mode Exit fullscreen mode

GRADLE:

testImplementation 'io.github.hakky54:logcaptor:2.9.2'
Enter fullscreen mode Exit fullscreen mode

Essa lib é compatível com:
SLFJ4
Logback
Java Util Logging
Apache Log4j
Apache Log4j2
Log4j with Lombok
Log4j2 with Lombok
SLFJ4 with Lombok
JBossLog with Lombok
Java Util Logging with Lombok
Spring Boot Starter Log4j2
Google Flogger

No meu projeto eu utilizei:

       <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.22.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.22.0</version>
        </dependency>
Enter fullscreen mode Exit fullscreen mode

Bem é isso, se curtiu ou se encontrou algum bug favor me informe e, se gostou dá uma curtida, até a próxima.

Top comments (2)

Collapse
 
2020nani profile image
Hernani Almeida

Parabens pelo artigo diegao

Collapse
 
leosbarai profile image
Leonardo Sbarai

Muito bom, meu caro. Parabéns pelo artigo.