diff --git a/src/main/java/net/jitse/phantom/spigot/utilities/logging/SpigotLogger.java b/src/main/java/net/jitse/phantom/spigot/utilities/logging/SpigotLogger.java index 4a08361..4830d63 100644 --- a/src/main/java/net/jitse/phantom/spigot/utilities/logging/SpigotLogger.java +++ b/src/main/java/net/jitse/phantom/spigot/utilities/logging/SpigotLogger.java @@ -4,55 +4,64 @@ import org.bukkit.ChatColor; import org.bukkit.entity.Player; +import java.util.EnumMap; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; + public class SpigotLogger { - private final String name; - private final ChatColor nameColor, messageColor; - private final LogLevel max; + private static final Logger LOGGER = Bukkit.getLogger(); + private static final Map LOG_LEVEL_PREFIXES = new EnumMap<>(LogLevel.class); + + static { + LOG_LEVEL_PREFIXES.put(LogLevel.DEBUG, ChatColor.YELLOW + "[Debug] "); + LOG_LEVEL_PREFIXES.put(LogLevel.ERROR, ChatColor.RED + "[Error] "); + LOG_LEVEL_PREFIXES.put(LogLevel.FATAL, ChatColor.RED + "[Fatal] "); + LOG_LEVEL_PREFIXES.put(LogLevel.INFO, ChatColor.WHITE + "[Info] "); + LOG_LEVEL_PREFIXES.put(LogLevel.WARN, ChatColor.GOLD + "[Warn] "); + LOG_LEVEL_PREFIXES.put(LogLevel.SUCCESS, ChatColor.GREEN + "[Success] "); + } + + private final String prefix; + private final ChatColor messageColor; + private final LogLevel maxLevel; - public SpigotLogger(String name, ChatColor nameColor, ChatColor messageColor, LogLevel max) { - this.name = name; - this.nameColor = nameColor; + public SpigotLogger(String name, ChatColor nameColor, ChatColor messageColor, LogLevel maxLevel) { + this.prefix = nameColor + "[" + name + "] "; this.messageColor = messageColor; - this.max = max; + this.maxLevel = maxLevel; } public void log(LogLevel level, String message) { - if (level.ordinal() < max.ordinal()) { + if (level.ordinal() < maxLevel.ordinal()) { return; } - String text = nameColor + "[" + name + "] "; + String levelPrefix = LOG_LEVEL_PREFIXES.getOrDefault(level, ""); + String fullMessage = prefix + levelPrefix + messageColor + message; + + LOGGER.log(getJavaLogLevel(level), ChatColor.stripColor(fullMessage)); + + String permission = "phantom.logging." + level.toString().toLowerCase(); + Bukkit.getOnlinePlayers().stream() + .filter(player -> player.hasPermission(permission)) + .forEach(player -> player.sendMessage(fullMessage)); + } + + private Level getJavaLogLevel(LogLevel level) { switch (level) { case DEBUG: - text += ChatColor.YELLOW + "[Debug] "; - break; + return Level.FINE; case ERROR: - text += ChatColor.RED + "[Error] "; - break; case FATAL: - text += ChatColor.RED + "[Fatal] "; - break; - case INFO: - text += ChatColor.WHITE + "[Info] "; - break; + return Level.SEVERE; case WARN: - text += ChatColor.GOLD + "[Warn] "; - break; + return Level.WARNING; case SUCCESS: - text += ChatColor.GREEN + "[Success] "; - break; + case INFO: default: - text += ""; - break; - } - - Bukkit.getConsoleSender().sendMessage(text + messageColor + message); - - for (Player player : Bukkit.getOnlinePlayers()) { - if (player.hasPermission("phantom.logging." + level.toString().toLowerCase())) { - player.sendMessage(text + messageColor + message); - } + return Level.INFO; } } }