标准 Java 日志记录定义了以下日志级别:
- 严重(最高)
- 警告
- 信息
- 配置
- 美好的
- 更精细
- 最好的
这与RFC 5424不兼容,因为它在 INFO 和 WARNING 之间缺少 NOTICE 级别。Java 缺少一些额外的日志级别(错误、关键、警报和紧急情况),但 NOTICE 是让我很受伤的一个。
有没有办法扩展可能的日志级别列表以添加缺少的 NOTICE 级别?还是有必要重写整个日志记录?
标准 Java 日志记录定义了以下日志级别:
这与RFC 5424不兼容,因为它在 INFO 和 WARNING 之间缺少 NOTICE 级别。Java 缺少一些额外的日志级别(错误、关键、警报和紧急情况),但 NOTICE 是让我很受伤的一个。
有没有办法扩展可能的日志级别列表以添加缺少的 NOTICE 级别?还是有必要重写整个日志记录?
这应该工作
class Level2 extends Level {
public static final Level2 NOTICE = new Level2("NOTICE", 850);
private Level2(String name, int level) {
super(name, level);
}
}
感谢叶夫根尼。这是完整的例子:
系统日志级别
导入 java.util.logging.Level; 公共类 SyslogLevel 扩展级别 { 公共静态 SyslogLevel EMERG = new SyslogLevel("EMERG", 1100); 公共静态 SyslogLevel ALERT = new SyslogLevel("ALERT", 1000); 公共静态 SyslogLevel ERR = new SyslogLevel("ERR", 950); 公共静态 SyslogLevel WARNING = new SyslogLevel("WARNING", 900); 公共静态 SyslogLevel NOTICE = new SyslogLevel("NOTICE", 850); 公共静态 SyslogLevel INFO = new SyslogLevel("INFO", 800); 公共静态 SyslogLevel DEBUG = new SyslogLevel("DEBUG", 300); 受保护的 SyslogLevel(字符串名称、int 值、字符串 resourceBundleName) { 超级(名称,值,resourceBundleName); } protected SyslogLevel(字符串名称,整数值) { 超级(名称,值); } }
日志记录
导入 java.util.logging.Logger; 导入 java.util.logging.Level; 导入 java.util.logging.FileHandler; 导入 java.util.logging.SimpleFormatter; 公共类日志记录 { 公共静态无效主要(字符串 [] 参数) { 记录器 logger = Logger.getLogger("MyLog"); 文件处理程序 fh; 尝试 { fh = new FileHandler ("logging.log", true); logger.addHandler (fh); logger.setLevel (Level.ALL); fh.setFormatter (new SimpleFormatter()); logger.log(SyslogLevel.NOTICE,“运行!”); } 捕捉(java.io.IOException e){ e.printStackTrace(); } } }
您可以扩展Level class
并提供更多功能。