簡體   English   中英

Java util logger:自定義格式化程序僅適用於某些級別

[英]Java util logger: custom formatter only works for some levels

我為 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 個工作。

日志、配置、精細、精細、精細發生了什么? 我如何讓他們使用我的格式化程序? 或者我如何將級別傳遞給格式化程序?

您可以設置Level與記錄的setlevel(水平)

設置日志級別,指定此記錄器將記錄哪些消息級別。 低於此值的消息級別將被丟棄

在您的情況下,因為您對所有級別都感興趣,它將是:

logger.setLevel(Level.ALL);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM