como imprimir uma exceção usando o logger?

tenho uma situação em que quero imprimir toda a excepção capturada no bloco de captura usando o lenhador.

 try {
        File file = new File("C:\\className").mkdir();
        fh = new FileHandler("C:\\className\\className.log");
        logger.addHandler(fh);
        logger.setUseParentHandlers(false);
        SimpleFormatter formatter = new SimpleFormatter();
        fh.setFormatter(formatter);
    } catch (Exception e) {
        logger.info(e);
    }

tenho o registo de erros que não pode ser aplicado a java.io.Exception...

a minha preocupação é se eu fizer tantas coisas no bloco de tentativa e eu manter apenas um bloco de captura como captura(excepção e), então há alguma maneira de usar o lenhador que imprime qualquer tipo de excepção apanhada no bloco de captura ? Nota: estamos usando java.util.log.Logger API

Author: Yu Hao, 2013-04-04

4 answers

Deve esclarecer qual o logger que está a usar.

org.apache.commons.logging.Log a interface tem o método void error(Object message, Throwable t) (e o método void info(Object message, Throwable t)), que regista o traço da pilha juntamente com a sua mensagem personalizada. A implementação Log4J também tem este método.

Então, provavelmente precisas de escrever:
logger.error("BOOM!", e);

Se precisar de o registar com o nível de informação( embora possa ser um caso de uso estranho), então:

logger.info("Just a stack trace, nothing to worry about", e);
Espero que ajude.
 25
Author: Giorgi Kandelaki, 2013-04-04 08:27:14

Uso: LOGGER.log(Level.INFO, "Got an exception.", e);
ou LOGGER.info("Got an exception. " + e.getMessage());

 4
Author: user3094526, 2014-09-25 12:15:06

Pode usar este método para registar a pilha de excepções no texto

 public String stackTraceToString(Throwable e) {
    StringBuilder sb = new StringBuilder();
    for (StackTraceElement element : e.getStackTrace()) {
        sb.append(element.toString());
        sb.append("\n");
    }
    return sb.toString();
}
 0
Author: Shashi, 2013-04-04 07:55:25

Tente registar o traço da pilha como em baixo:

logger.error("Exception :: " , e);
 0
Author: John Jai, 2013-04-04 08:12:42