标准 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并提供更多功能。