如何定义附加的Java日志级别?
问题描述:
的standard Java logging定义了以下日志级别:如何定义附加的Java日志级别?
- 严重(最高)
- 警告
- INFO
- CONFIG
- FINE
- FINER
- FINEST
这与RFC 5424不兼容,因为它缺少INFO和WARNING之间的NOTICE级别。 Java缺少一些额外的日志级别(错误,危急,警报和紧急情况),但NOTICE是伤害我的一个。
有什么办法来扩展可能的日志级别的列表,以添加缺少的通知级别?还是有必要重写整个日志?
答
这应该工作
class Level2 extends Level {
public static final Level2 NOTICE = new Level2("NOTICE", 850);
private Level2(String name, int level) {
super(name, level);
}
}
答
您可以扩展Level class
并提供更多功能。
答
感谢叶夫根尼。这是完整的例子:
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
什么是850? IBM代码页? ;-) – ceving 2013-02-28 10:36:37
这是从FINEST = 300到SEVERE = 1000的日志级别。INFO = 800 WARNING = 900 – 2013-02-28 10:43:20
我的错误已修复 – 2013-02-28 11:18:11