- A Classe
Loggerrecebe no seu construtor um nome; como boa prática esse nome é o mesmo nome da classe que a instância doLoggerestá 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,exitingethrowing - Identificar um nível(nome do método) e uma mensagem. Os métodos são
severe,warning,config,info,fine,finerefinest

- Podem ser configurados usando o arquivo
logging.properties

- Um Log Handler escreve os logs em algum lugar: console, um arquivo, memória, socket ou Stream. Esses logs formatam o log com
SimpleFormatterouXMLFormatter.
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);