Java util logger:自定义格式化程序仅适用于某些级别

时间:2017-06-06 15:33:32

标签: java logging

我为java.util记录器制作了一个自定义格式化程序,实现如下

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

运行以下代码:

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

只有信息,警告和严肃的工作。其他方法运行但不向控制台返回任何内容,并且不向日志文件写入任何内容。我需要实现至少4个日志记录级别,但只有3个工作。

日志,配置,精细,精细,最好的情况如何?如何让他们使用我的格式化程序?或者我如何将关卡传递给格式化程序?

1 个答案:

答案 0 :(得分:1)

您可以使用setlevel(Level)

设置记录的Level
  

设置日志级别,指定要记录的消息级别   这个记录器。 将丢弃低于此值的邮件级别

在您的情况下,因为您对所有级别感兴趣,它将是:

logger.setLevel(Level.ALL);