在我的 Java 应用程序的首选项中,他们可以将调试级别设置为包含七个默认级别的 JComboBox。该列表包含严重,警告,信息等,这是相当丑陋的,我宁愿用“严重,警告”代替英语。
java logging 使用的 java.util.logging.Level 具有可以采用不同资源包的构造函数,因此我想到了 sublassing Level 以便我可以将资源包更改为我自己的。
但是如何让 java 日志记录使用修改后的级别
编辑
使用了下面 kans 答案中给出的示例类的修改版本
class LevelItem extends Object
{
public final Level level;
public LevelItem(Level level)
{
this.level = level;
}
public String toString()
{
return level.getLocalizedName().substring(0,1)+
level.getLocalizedName().substring(1).toLowerCase();
}
public boolean equals(Object obj)
{
return (obj instanceof LevelItem &&
(this.level.equals((((LevelItem) obj).level))));
}
}
但需要添加 equals 方法,以便 setSelectedItem() 在组合框中为我工作
IE
debugLevelCombo = new JComboBox();
debugLevelCombo.addItem(new LevelItem(Level.SEVERE));
debugLevelCombo.addItem(new LevelItem(Level.WARNING));
debugLevelCombo.addItem(new LevelItem(Level.INFO));
debugLevelCombo.addItem(new LevelItem(Level.CONFIG));
debugLevelCombo.addItem(new LevelItem(Level.FINE));
debugLevelCombo.addItem(new LevelItem(Level.FINER));
debugLevelCombo.addItem(new LevelItem(Level.FINEST));
debugLevelCombo.setSelectedItem(new
LevelItem(Level.parse(UserPreferences.getInstance().getDebugLevel())));