Use um Logger em Java

Rashmi Patidar 12 outubro 2023
Use um Logger em Java

Na linguagem de programação Java, Logging é uma API que permite aos usuários rastrear o erro gerado a partir de classes específicas. Um logger ajuda no mecanismo de registro em tempo real, adicionando carimbos de data / hora e os terminais onde é preenchido. A API ajuda a manter o controle de eventos como um registro de um log. Os registros ajudam a localizar a causa raiz dos problemas que aconteceram e gerar novamente o mesmo evento posteriormente.

Este artigo mostra um método para utilizar melhor os logs Java.

as funções de um logger em Java

O logger e sua função são demonstrados no programa abaixo.

package log_file;

import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;

public class AddLoggerInFile {
  public static void main(String[] args) {
    Logger logger = Logger.getLogger("MyLog");
    FileHandler fileHandler;
    try {
      fileHandler = new FileHandler("src/main/resources/MyLogFile.txt");
      logger.addHandler(fileHandler);
      SimpleFormatter simpleFormatter = new SimpleFormatter();
      fileHandler.setFormatter(simpleFormatter);
      logger.info("Log to test");

    } catch (SecurityException e) {
      logger.info("Exception:" + e.getMessage());
      e.printStackTrace();
    } catch (IOException e) {
      logger.info("IO Exception:" + e.getMessage());
      e.printStackTrace();
    }
    logger.info("Hi In the main class");
  }
}

No bloco de código acima, um logger é instanciado inicialmente.

A classe está presente no pacote java.util.logging. O getLogger é um método estático presente na classe Logger que cria um logger se não estiver presente no sistema com o nome fornecido. A função else retorna a instância do logger existente se já estiver presente.

A função lança NullPointerException se o nome fornecido for o valor nulo. Depois que a instância do logger é instanciada, uma instância do manipulador de arquivos é criada.

A classe FileHandler está presente no pacote java.util.logging e foi especificamente projetada e configurada para lidar com o log impresso usando a instância logger. O construtor FileHandler inicializa o manipulador para gravar as informações no nome de arquivo fornecido. O construtor usa o nome do arquivo de saída como parâmetro.

No código acima, um caminho relativo é fornecido com o nome do arquivo. O tamanho não é definido no arquivo, pois pode ser estendido até o limite em que os logs entram nele. O construtor lança IOException quando o compilador enfrenta um problema ao abrir os arquivos. Ele lança SecurityException se um gerenciador de segurança não tiver LoggingPermission e IllegalArgumentException se o padrão for uma string vazia.

O método addHandler mapeia um manipulador de arquivo para receber as mensagens de registro no arquivo. A função é do tipo de retorno void, pois não retorna nenhum valor. Em vez disso, ele consome apenas os logs e eventos. Ele lança SecurityException se um gerenciador de segurança não tiver permissões de registro suficientes.

A instância SimpleFormatter é iniciada; a classe também está presente no pacote java.util.logging. O formatador permite o privilégio de autoformatar os logs usando a propriedade logging.SimpleFormatter.format. Esta propriedade permite que as mensagens de log estejam em um formato definido e, portanto, mantendo a uniformidade.

O setFormatter é uma função que define um formatador na instância do logger. O info é uma função presente na classe Logger para imprimir as mensagens de log INFO no arquivo. Pode haver vários níveis de registro presentes na classe Nível. Com base no uso, podemos usar os logs INFO, DEBUG, FINE, CONFIG e SEVERE.

Os níveis de registro são os detalhes de registro que definem a gravidade do registro do programa. Os níveis têm algum número definido e um significado específico. Por exemplo, SEVERE tem um valor de log de 1000 e denota a falha no sistema e deve ser cuidado imediatamente.

A gravidade ocorre quando alguma falha de rede ou conectividade com o banco de dados é perdida. Da mesma forma, o nível AVISO mantém um valor de 900 e denota o risco potencial no sistema.

Abaixo está a saída que é preenchida na saída padrão do console e no arquivo MyLogFile.txt.

Produção:

Jul 04, 2021 12:05:29 AM log_file.AddLoggerInFile main
INFO: Log to test
Jul 04, 2021 12:05:29 AM log_file.AddLoggerInFile main
INFO: Hi In the main class
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn