我需要自定义日志级别(java.util.logging.Level除外)和java util logger中的自定义函数来记录这些级别的消息。
自定义级别: 1.调试 2.错误 3.致命
所以我创建了从Level扩展的XYZLevel,如下所示:
public class OKILevel extends Level {
public OKILevel(String name, int value) {
super(name, value);
}
/* OKI Log Levels */
public static final Level FATAL = new OKILevel("FATAL",
Level.SEVERE.intValue() + 100);
public static final Level ERROR = new OKILevel("ERROR",
Level.SEVERE.intValue());
public static final Level DEBUG = new OKILevel("DEBUG",
Level.FINE.intValue());
}
需要自定义功能: .debug(),. severe()等类似于logger中的.info。
对于记录器,我这样做:
static final Logger logger = Logger.getLogger(ABC.class.getName());
我无法弄明白:
static final XYZLogger logger = XYZLogger.getLogger(ABC.class.getName());
扩展Logger并没有帮助。
此外,对于此应用程序,需要传入logging.properties。 如何在logging.properties的.level中使用这些新级别?
答案 0 :(得分:0)
如果您正在创建日志包装器,那么在发明新内容之前,您应该利用一些标准框架。
如果您希望应用程序使用新的记录器实现,则必须实现并安装自定义LogManager。
此外,对于此应用程序,需要传入logging.properties。如何在logging.properties的.level中使用这些新级别?
所有.level
解析通过
Level.parse
方法。根据文档:
参数字符串可以包含级别名称或整数值。
例如:
"严重"
" 1000"
所以你应该写:
#Level.SEVERE + 100 = FATAL
some.logger.name.level = 1100
据说在某些Java版本中存在finding the correct level value by int的一些已知问题。
另一个选项,如果你只想让一个关卡的渲染输出不同,那么你应该看看Best way to override java.util.logging Level class to change the level strings。