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
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.
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.
Uso: LOGGER.log(Level.INFO, "Got an exception.", e);
ou LOGGER.info("Got an exception. " + e.getMessage())
;
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();
}
Tente registar o traço da pilha como em baixo:
logger.error("Exception :: " , e);