web-dev-qa-db-fra.com

comment imprimer une exception à l'aide de l'enregistreur?

J'ai une situation dans laquelle je veux imprimer toutes les exceptions prises dans le bloc catch à l'aide de l'enregistreur.

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

j'ai reçu le journal des erreurs ne peut pas être appliqué à Java.io.Exception...

Ma préoccupation est que si je fais tant de choses dans le bloc try et que je ne garde qu'un seul bloc catch comme catch (Exception e), alors y a-t-il un moyen d'utiliser un enregistreur qui imprime tout type d'exception pris dans le bloc catch? Remarque: nous utilisons l'API Java.util.logging.Logger

17
Pankaj

Vous devriez probablement préciser quel enregistreur utilisez-vous.

L'interface org.Apache.commons.logging.Log Possède la méthode void error(Object message, Throwable t) (et la méthode void info(Object message, Throwable t)), qui enregistre la trace de la pile avec votre message personnalisé. L'implémentation de Log4J a également cette méthode.

Donc, vous devez probablement écrire:

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

Si vous devez l'enregistrer avec le niveau INFO (cependant, cela peut être un cas d'utilisation étrange), alors:

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

J'espère que ça aide.

29
Giorgi Kandelaki

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

4
Elobilo

Essayez de consigner la trace de la pile comme ci-dessous:

logger.error("Exception :: " , e);
1
John Jai

Vous pouvez utiliser cette méthode pour consigner la pile d'exceptions dans 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();
}
0
Shashi