how to print an exception using logger?

125,745

Solution 1

You should probably clarify which logger are you using.

org.apache.commons.logging.Log interface has method void error(Object message, Throwable t) (and method void info(Object message, Throwable t)), which logs the stack trace together with your custom message. Log4J implementation has this method too.

So, probably you need to write:

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

If you need to log it with INFO level (though, it might be a strange use case), then:

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

Hope it helps.

Solution 2

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

Solution 3

Try to log the stack trace like below:

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

Solution 4

You can use this method to log the exception stack to 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();
}
Share:
125,745

Related videos on Youtube

Pankaj
Author by

Pankaj

An Employee working in java application

Updated on June 15, 2020

Comments

  • Pankaj
    Pankaj almost 4 years

    I have a situation in which I want to print all the exception caught in catch block using 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);
        }
    

    i got the error logger cannot be applied to java.io.Exception...

    My concern is if I do so many thing in try block and I keep only one catch block as catch(Exception e), Then is there any way using logger that print any kind of exception caught in catch block ? Note: we are using java.util.logging.Logger API

  • Pankaj
    Pankaj about 11 years
    i tried this, got the error Symbol not found symbol : method error(java.lang.String,java.io.IOException) location: class java.util.logging.Logger logger.error("Exception:: ",e);
  • Pankaj
    Pankaj about 11 years
    @Kadelakig sorry, we are using java.util.looging API
  • John Jai
    John Jai about 11 years
    @Pankaj Aren't you using Log4j for logging. The method is present in org.apache.log4j.Logger
  • Giorgi Kandelaki
    Giorgi Kandelaki about 11 years
    Oh I see. It seems that there also is somewhat similar functionality: java.util.logging.Logger.getLogger("Test").log(Level.INFO, "BOOM!", e); <-- this worked for me.
  • SimY4
    SimY4 over 9 years
    If exception is unexpected then I recommend to use SEVERE of WARNING log level for log message
  • Elobilo
    Elobilo over 9 years
    Yes, for unexpected exceptions that would probably be true. I was answering the question though, where the questioner was using info log level to log and hence my example using info.