簡體   English   中英

如何自定義默認的Java日志記錄?

[英]How to customize the default java logging?

我需要具有自定義日志級別(不是java.util.logging.Level),並且需要Java util logger中的自定義函數來記錄這些級別的消息。

自定義級別:1.調試2.錯誤3.致命

所以我創建了從Level擴展的XYZLevel,如下所示:

public class OKILevel extends Level {

public OKILevel(String name, int value) {
    super(name, value);
}

/* OKI Log Levels */
public static final Level FATAL = new OKILevel("FATAL",
        Level.SEVERE.intValue() + 100);

public static final Level ERROR = new OKILevel("ERROR",
        Level.SEVERE.intValue());

public static final Level DEBUG = new OKILevel("DEBUG",
        Level.FINE.intValue());

}

需要自定義函數:.debug()、. severe()等,類似於記錄器中的.info。

對於記錄器,我這樣做:

static final Logger logger = Logger.getLogger(ABC.class.getName());

我無法弄清楚:

static final XYZLogger logger = XYZLogger.getLogger(ABC.class.getName());

擴展記錄器無濟於事。

另外,對於此應用程序,需要傳遞logging.properties。如何在logging.properties的.level中使用這些新級別?

如果要創建日志包裝器,則應在發明新內容之前利用一些標准框架。

如果希望您的應用程序使用新的記錄器實現,則必須實現並安裝自定義LogManager

另外,對於此應用程序,需要傳遞logging.properties。如何在logging.properties的.level中使用這些新級別?

所有的.level解析都是通過Level.parse方法執行的。 根據文檔:

參數字符串可以由級別名稱或整數值組成。

例如:

  • “嚴重”

  • “ 1000”

因此,您應該能夠編寫:

#Level.SEVERE + 100 = FATAL
some.logger.name.level = 1100

也就是說在某些Java版本中, 通過int查找正確的級別值存在一些已知的問題。

如果您只是希望某個級別的呈現輸出與眾不同,則可以使用另一種方法,那就應該看看重寫java.util.logging Level類以更改級別字符串的最佳方法

暫無
暫無

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

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