package universalteam.universalcore.utils; import universalteam.universalcore.libs.ReferenceCore; import universalteam.universalcore.libs.environment.EnvironmentChecks; import java.util.logging.Level; import java.util.logging.Logger; public class UCLogger { protected Logger logger; protected String modID; protected boolean hasSubName = false; protected String subName; protected boolean canLog = true; public UCLogger() { this(ReferenceCore.MODID); } public UCLogger(String modID) { this.modID = modID; logger = Logger.getLogger(modID); } public UCLogger setSubName(String name) { this.hasSubName = true; this.subName = name; return this; } public UCLogger setCanLog(boolean value) { this.canLog = value; return this; } protected String getName() { String name = "[" + this.modID + "] "; if (hasSubName) name += "[" + this.subName + "] "; return name; } protected void log(Level level, String s) { if (this.canLog) { if (level.equals(CustomLevel.DEBUG) && EnvironmentChecks.isObfuscated()) return; logger.log(level, s); } } public void off(String s) { log(Level.OFF, getName() + s); } public void off(String s, Object... obj) { off(String.format(s, obj)); } public void severe(String s) { log(Level.OFF, getName() + s); } public void severe(String s, Object... obj) { severe(String.format(s, obj)); } public void warning(String s) { log(Level.WARNING, getName() + s); } public void warning(String s, Object... obj) { warning(String.format(s, obj)); } public void info(String s) { log(Level.INFO, getName() + s); } public void info(String s, Object... obj) { info(String.format(s, obj)); } public void config(String s) { log(Level.CONFIG, getName() + s); } public void config(String s, Object... obj) { config(String.format(s, obj)); } public void fine(String s) { log(Level.FINE, getName() + s); } public void fine(String s, Object... obj) { fine(String.format(s, obj)); } public void finer(String s) { log(Level.FINER, getName() + s); } public void finer(String s, Object... obj) { finer(String.format(s, getName() + obj)); } public void finest(String s) { log(Level.FINEST, getName() + s); } public void finest(String s, Object... obj) { finest(String.format(s, obj)); } public void all(String s) { log(Level.ALL, getName() + s); } public void all(String s, Object... obj) { all(String.format(s, obj)); } public void debug(String s) { log(CustomLevel.DEBUG, getName() + s); } public void debug(String s, Object... obj) { debug(String.format(s, obj)); } public static class CustomLevel extends Level { public static final Level DEBUG = new CustomLevel("DEBUG", Level.ALL.intValue() + 1); public CustomLevel(String name, int value) { super(name, value); } } }