In the settings of my Java application, they can set the debugging level, presented as a JComboBox, containing seven default levels. The list contains SEVERE, WARNING, INFO ecetera, which is rather ugly, and Id rather replaces "Severe, Warning" for English.
java.util.logging.Level, which is used in java logging, has constructors that can use a different set of resources, so I was thinking of a subclass Level so that I could pass the resource package myself.
But how do I get a java log to use changed levels
EDIT
A modified version of the example class is used, given in the answers below,
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)))); } }
but you need to add the equals method, so setSelectedItem () works for me in combobox
i.e
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())));
source share