Skip to content

Logging

Domingos Latorre edited this page Jul 7, 2022 · 2 revisions

Esta página especifica diretrizes práticas para definição de logs no projeto.

Introdução

Logs provém visibilidade para o eventos e comportamentos de uma aplicação em execução.

Framework de Logging

O projeto adota o framework Logback presente no spring-boot-starter-web. Adotamos um framework pois possibilita de configuração, logs levels, diferentes destinosm entre outros benefícios.

Logging Levels

Fatal

Eventos que param a aplicação por completo.

Error

Eventos que não param por completo a aplicação, mas que geram algum tipo de exceção. Devem sempre ser logados.

Warning

Eventos que não param por completo a aplicação, mas que deveriam ser informados a equipe de desenvolvimento e sustentação do software.

Info

Eventos importantes para equipe que está mantendo a aplicação em produção e outros ambientes. Exemplos: criação de usuários, rastreamento de comportamento (criar usuários, enviar e-mail, confirmar e-mail).


Debug

Informações para desenvolvedores. Em geral não devem estar habilitados em produção.

Trace

Informações para desenvolvedores, mas em um nível mais específico/fino que o debug. Em geral não devem estar habilitados em produção.

Level default no Spring Boot

O log padrão definido em uma aplicação spring é o Info. Para mudar o level podemos alterar o arquivo application.yml

logging:
  level:
    root: TRACE

Essa configuração acaba trazendo os eventos de log de todas as dependências do projeto. Podemos alterar a configuração apenas para o pacote da aplicação, mantendo as dependencias do projeto como Info.

logging:
  level:
    root: INFO
    br:
      edu:
        ifsp:
          spo:
            ifspcodelab: ${APP_LOGGING_LEVEL:TRACE}

Exemplo de código para criação do log

Como estamos usando o Lombok no projeto, não é necessário criar manualmente o log:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyClass {
    private static final Logger log = LogFactory.getLogger( MyClass.class );
    private void myMethod() {
	log.info( "This is a info message");
    }
}

Use a anotação @Slf4j na classe:

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class MyClass {
    private void myMethod() {
	log.info( "This is a info message");
    }
}

Clone this wiki locally