desenvolvimento, exceptions, java, logging

Logging no Exception Handler

Importar classes:

import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;

Declarar o logger no início da classe:

private static Logger logger = Logger.getLogger("NOME_COMPLETO_DA_CLASSE");

Configurar o file handler abaixo da declaração do logger:

static{
try { // 3 arquivos de no máximo 2mb
    FileHandler handler = new FileHandler("file_%g.log", 2000000, 3, true);
    handler.setFormatter(new SimpleFormatter());
    logger.addHandler(handler);
} catch (Exception e) {
    e.printStackTrace();
}

Pegar exceções e registrá-las:

try {
    // CÓDIGO A SER CHAMADO
} catch (Exception e) {
    <strong>logger.log(Level.SEVERE, e.getMessage(), e);</strong>
    // TRATAMENTO OU RETHROW
}

Ao tratar Exception, você garante que pegará qualquer RuntimeException (bugs) ou qualquer outra checked exception.

Se quiser tratar exceções isoladamente, deixe a catch (Exception e) por último.

Neste exemplo, file_%g.log vai gerar 3 arquivos chamados file_0.log, file_1.log e file_2.log. Quando file_0 chegar a 2mb, seu conteúdo será movido para file_1. Desta forma o handler vai garantir um histórico que cronologicamente deverá ser lido de file_2 até file_0.

Um esquema de log apenas com exceções parece ser mais coeso do que misturar com demais registros que a aplicação possa vir a manter.

IMPORTANTE 1: toda exceção deve responder 3 perguntas:
-o que (tipo apropriado da exceção)
-onde (stacktrace)
-por que (mensagem do programador)

IMPORTANTE 2: lance exceções CEDO (especialmente através de programação defensiva) e pegue-as TARDE (não engolir exceções… deixe que o handler apropriado lide com ela).

Referências:

http://www.exampledepot.com/egs/java.util.logging/pkg.html
http://today.java.net/pub/a/today/2003/12/04/exceptions.html

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s