2013-02-28 24 views
0

standard Java logging定義了以下日誌級別:如何定義附加的Java日誌級別?

  • 嚴重(最高)
  • 警告
  • INFO
  • CONFIG
  • FINE
  • FINER
  • FINEST

這與RFC 5424不兼容,因爲它缺少INFO和WARNING之間的NOTICE級別。 Java缺少一些額外的日誌級別(錯誤,危急,警報和緊急情況),但NOTICE是傷害我的一個。

有什麼辦法來擴展可能的日誌級別的列表,以添加缺少的通知級別?還是有必要重寫整個日誌?

回答

2

這應該工作

class Level2 extends Level { 
    public static final Level2 NOTICE = new Level2("NOTICE", 850); 

    private Level2(String name, int level) { 
     super(name, level); 
    } 
} 
+0

什麼是850? IBM代碼頁? ;-) – ceving 2013-02-28 10:36:37

+0

這是從FINEST = 300到SEVERE = 1000的日誌級別。INFO = 800 WARNING = 900 – 2013-02-28 10:43:20

+0

我的錯誤已修復 – 2013-02-28 11:18:11

2

您可以擴展Level class並提供更多功能。

1

感謝葉夫根尼。這是完整的例子:

SyslogLevel

 
import java.util.logging.Level; 

public class SyslogLevel extends Level 
{ 
    public static SyslogLevel EMERG = new SyslogLevel("EMERG", 1100); 
    public static SyslogLevel ALERT = new SyslogLevel("ALERT", 1000); 
    public static SyslogLevel ERR  = new SyslogLevel("ERR",  950); 
    public static SyslogLevel WARNING = new SyslogLevel("WARNING", 900); 
    public static SyslogLevel NOTICE = new SyslogLevel("NOTICE", 850); 
    public static SyslogLevel INFO = new SyslogLevel("INFO", 800); 
    public static SyslogLevel DEBUG = new SyslogLevel("DEBUG", 300); 

    protected SyslogLevel (String name, int value, String resourceBundleName) 
    { 
     super (name, value, resourceBundleName); 
    } 

    protected SyslogLevel (String name, int value) 
    { 
     super (name, value); 
    } 
} 

記錄

 
import java.util.logging.Logger; 
import java.util.logging.Level; 
import java.util.logging.FileHandler; 
import java.util.logging.SimpleFormatter; 

public class logging 
{ 
    public static void main(String[] args) 
    { 
     Logger logger = Logger.getLogger ("MyLog"); 
     FileHandler fh; 
     try { 
      fh = new FileHandler ("logging.log", true); 
      logger.addHandler (fh); 
      logger.setLevel (Level.ALL); 
      fh.setFormatter (new SimpleFormatter()); 
      logger.log (SyslogLevel.NOTICE, "Run!"); 
     } 
     catch (java.io.IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

請注意,本例中忘記了「CRITICAL」級別。謝謝,但是非常有用! – Loek 2017-10-03 14:23:47