0

标准 Java 日志记录定义了以下日志级别:

  • 严重(最高)
  • 警告
  • 信息
  • 配置
  • 美好的
  • 更精细
  • 最好的

这与RFC 5424不兼容,因为它在 INFO 和 WARNING 之间缺少 NOTICE 级别。Java 缺少一些额外的日志级别(错误、关键、警报和紧急情况),但 NOTICE 是让我很受伤的一个。

有没有办法扩展可能的日志级别列表以添加缺少的 NOTICE 级别?还是有必要重写整个日志记录?

4

3 回答 3

2

这应该工作

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

    private Level2(String name, int level) {
        super(name, level);
    }
}
于 2013-02-28T10:06:56.283 回答
2

感谢叶夫根尼。这是完整的例子:

系统日志级别

导入 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();
        }
    }
}
于 2013-02-28T11:21:22.510 回答
1

您可以扩展Level class并提供更多功能。

于 2013-02-28T09:41:33.417 回答