como imprimir uma exceção usando o logger?

Eu tenho uma situação em que eu quero imprimir toda a exceção capturada no bloco catch usando logger.

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); } 

Eu tenho o logger de erro não pode ser aplicado a java.io.Exception...

Minha preocupação é se eu faço tanta coisa no bloco try e mantenho apenas um catch catch como catch (Exception e), então existe alguma maneira de usar o logger que imprime qualquer tipo de exceção capturada no bloco catch? Nota: estamos usando a API java.util.logging.Logger

Você provavelmente deve esclarecer qual registrador está usando.

org.apache.commons.logging.Log interface org.apache.commons.logging.Log possui void error(Object message, Throwable t) método void error(Object message, Throwable t) (e método void info(Object message, Throwable t) ), que registra o rastreamento de pilha junto com sua mensagem personalizada. A implementação do Log4J também possui esse método.

Então, provavelmente você precisa escrever:

 logger.error("BOOM!", e); 

Se você precisar logar com o nível INFO (embora possa ser um caso de uso estranho), então:

 logger.info("Just a stack trace, nothing to worry about", e); 

Espero que ajude.

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

Você pode usar esse método para registrar a pilha de exceção em String

  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 registrar o rastreamento da pilha como abaixo:

 logger.error("Exception :: " , e);