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

- 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
SimpleFormatter
ouXMLFormatter
.
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);