1

I have made a custom formatter for the java.util logger, implemented as below

logger = Logger.getAnonymousLogger();
logger.setUseParentHandlers(false);
sb = new StringBuffer();
try {
  Handler handler = new FileHandler("xx.log");
  handler.setFormatter(new CustomFormatter());
  logger.addHandler(handler);
} catch (IOException e) {
  e.printStackTrace();
}

 private class CustomFormatter extends Formatter {
    @Override
    public String format(LogRecord record) {
      String msg = record.getMessage();
      sb.append(msg);
      System.out.print(sb.toString());
      return sb.toString();
    }
  }

Running the following code:

logger.finest(msg);
logger.finer(msg);
logger.fine(msg);
logger.config(msg);
logger.info(msg);
logger.warning(msg);
logger.severe(msg);
logger.log(new LogRecord(Level.FINE, msg));   

Only info, warning, and severe work. the other methods run but return nothing to console, and write nothing to the log file. I need to implement at least 4 logging levels, but only the 3 work.

What is happening to log,config,fine,finer, finest? How do I get them to use my formatter? Or how do I pass the level to the formatter?

Adamater
  • 123
  • 1
  • 1
  • 6

1 Answers1

1

You may set the Level of logging with setlevel(Level)

Set the log level specifying which message levels will be logged by this logger. Message levels lower than this value will be discarded.

In your case as you are interested in all levels, it would be :

logger.setLevel(Level.ALL);
Arnaud
  • 17,229
  • 3
  • 31
  • 44