Java Logging API

Aula
Estado
  • A Classe Logger recebe no seu construtor um nome; como boa prática esse nome é o mesmo nome da classe que a instância do Logger está sendo criada (e.g. Product.class.getName())
  • Existem 7 níveis de severidade para os Logs
  • É possível definir um nível mínimo de severidade para exibir os logs
  • Os Loggers formam uma hierarquia. O Logger de uma classe filha herda o nível do pai e pode sobrescrevê-lo
  • Os métodos de log podem ser agrupados em 5 propósitos principais:
    • Identificar um nível, uma mensagem e parâmetros opcionais. O método é log
    • Identificar um nível, uma mensagem e uma classe e nome de método. O método é logp
    • Identificar um nível, uma mensagem e o nome de um Resource Bundle que permite a localização(tradução) da mensagem. O método é logrb
    • Identificar uma entrada de método, um saída de método e o lançamento de uma exceção no nível FINER. Os métodos são entering, exiting e throwing
    • Identificar um nível(nome do método) e uma mensagem. Os métodos são severe, warning, config, info, fine, finer e finest
notion image
  • Podem ser configurados usando o arquivo logging.properties
notion image
  • Um Log Handler escreve os logs em algum lugar: console, um arquivo, memória, socket ou Stream. Esses logs formatam o log com SimpleFormatter ou XMLFormatter.

Como evitar processar mensagens descartadas

É possível que alguns logs não sejam impressos na tela por serem de um nível de severidade menor que o solicitado. Para evitar que a aplicação gaste recursos na manipulação de mensagens(como uma concatenação) que não serão exibidas, pode-se utilizar:
// uma condicional if (logger.isLoggable(Level.FINER)) logger.log(Level.FINE, "Product " + id + "has been selected"); // uma deleção da concatenação para o logger logger.log(Level.Fine, "Product {0} has been selected", id);