From b6e66410419f7d381c268dabcc973a1aff5d5f7e Mon Sep 17 00:00:00 2001 From: MiniDay <372403923@qq.com> Date: Sat, 6 Jul 2024 13:31:29 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=8C=E6=88=90=20SimpleLogger?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/core/bukkit/HamsterCorePlugin.java | 57 +++++----- .../plugin/core/bukkit/api/CoreBukkitAPI.java | 6 +- .../bukkit/command/core/sub/YamlCommand.java | 4 +- .../plugin/core/bukkit/hook/EconomyAPI.java | 2 +- .../mc/plugin/core/bukkit/hook/PointAPI.java | 15 +-- .../mc/plugin/core/bukkit/hook/VaultAPI.java | 57 +++------- .../plugin/core/bukkit/page/ButtonGroup.java | 6 +- .../plugin/core/bukkit/page/PageConfig.java | 13 ++- .../bukkit/page/listener/PageListener.java | 18 ++-- .../core/bukkit/util/BukkitSimpleLogger.java | 38 +++++++ core-bukkit/src/main/resources/config.yml | 7 ++ .../plugin/core/bungee/HamsterCorePlugin.java | 43 ++++---- .../plugin/core/bungee/api/CoreBungeeAPI.java | 6 +- .../core/bungee/util/BungeePluginLogger.java | 100 ------------------ .../core/bungee/util/BungeeSimpleLogger.java | 38 +++++++ .../mc/plugin/core/common/api/CoreAPI.java | 79 +++++++++----- .../plugin/core/common/util/SimpleLogger.java | 54 +++++----- .../core/velocity/HamsterCorePlugin.java | 40 +++---- .../core/velocity/api/CoreVelocityAPI.java | 6 +- .../velocity/util/VelocitySimpleLogger.java | 57 ++++++++++ 20 files changed, 338 insertions(+), 308 deletions(-) create mode 100644 core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/util/BukkitSimpleLogger.java delete mode 100644 core-bungee/src/main/java/cn/hamster3/mc/plugin/core/bungee/util/BungeePluginLogger.java create mode 100644 core-bungee/src/main/java/cn/hamster3/mc/plugin/core/bungee/util/BungeeSimpleLogger.java rename core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/util/BukkitPluginLogger.java => core-common/src/main/java/cn/hamster3/mc/plugin/core/common/util/SimpleLogger.java (60%) create mode 100644 core-velocity/src/main/java/cn/hamster3/mc/plugin/core/velocity/util/VelocitySimpleLogger.java diff --git a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/HamsterCorePlugin.java b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/HamsterCorePlugin.java index 48bd531..e5f842e 100644 --- a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/HamsterCorePlugin.java +++ b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/HamsterCorePlugin.java @@ -11,11 +11,13 @@ import cn.hamster3.mc.plugin.core.bukkit.listener.CallbackListener; import cn.hamster3.mc.plugin.core.bukkit.listener.DebugListener; import cn.hamster3.mc.plugin.core.bukkit.page.handler.PageHandler; import cn.hamster3.mc.plugin.core.bukkit.page.listener.PageListener; +import cn.hamster3.mc.plugin.core.bukkit.util.BukkitSimpleLogger; import cn.hamster3.mc.plugin.core.bukkit.util.MinecraftVersion; import cn.hamster3.mc.plugin.core.common.api.CoreAPI; import cn.hamster3.mc.plugin.core.common.config.ConfigSection; import cn.hamster3.mc.plugin.core.common.config.YamlConfig; import cn.hamster3.mc.plugin.core.common.util.UpdateCheckUtils; +import com.zaxxer.hikari.HikariDataSource; import lombok.Getter; import net.kyori.adventure.platform.bukkit.BukkitAudiences; import org.bukkit.Bukkit; @@ -34,12 +36,13 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.util.logging.Level; -import java.util.logging.Logger; public class HamsterCorePlugin extends JavaPlugin { @Getter private static HamsterCorePlugin instance; @Getter + private static BukkitSimpleLogger simpleLogger; + @Getter private BukkitAudiences audienceProvider; /** @@ -67,15 +70,15 @@ public class HamsterCorePlugin extends JavaPlugin { @Override public void onLoad() { instance = this; + simpleLogger = new BukkitSimpleLogger(getInstance()); long start = System.currentTimeMillis(); - Logger logger = getLogger(); - logger.info("仓鼠核心正在初始化"); - logger.info("Minecraft 版本: " + MinecraftVersion.getMCVersion()); - logger.info("NMS 版本: " + MinecraftVersion.getNMSVersion()); + simpleLogger.info("仓鼠核心正在初始化"); + simpleLogger.info("Minecraft 版本: " + MinecraftVersion.getMCVersion()); + simpleLogger.info("NMS 版本: " + MinecraftVersion.getNMSVersion()); try { File dataFolder = getDataFolder(); if (dataFolder.mkdir()) { - logger.info("已生成插件存档文件夹"); + simpleLogger.info("已生成插件存档文件夹"); } File configFile = new File(dataFolder, "config.yml"); if (!configFile.exists()) { @@ -86,53 +89,55 @@ public class HamsterCorePlugin extends JavaPlugin { } } CoreBukkitAPI.init(configFile); - logger.info("已初始化 CoreAPI"); + simpleLogger.info("已初始化 CoreAPI"); } catch (Exception e) { - logger.log(Level.WARNING, "初始化 CoreAPI 出错", e); + simpleLogger.log(Level.WARNING, "初始化 CoreAPI 出错", e); } CoreMessage.init(this); - logger.info("已初始化语言文本"); + simpleLogger.info("已初始化语言文本"); long time = System.currentTimeMillis() - start; - logger.info("仓鼠核心初始化完成,总计耗时 " + time + " ms"); + simpleLogger.info("仓鼠核心初始化完成,总计耗时 " + time + " ms"); } @Override public void onEnable() { long start = System.currentTimeMillis(); - Logger logger = getLogger(); - logger.info("仓鼠核心正在启动"); + simpleLogger.info("仓鼠核心正在启动"); audienceProvider = BukkitAudiences.create(this); - logger.info("已创建 AudienceProvider"); + simpleLogger.info("已创建 AudienceProvider"); CoreCommand.INSTANCE.register(); LoreCommand.INSTANCE.register(); NBTCommand.INSTANCE.register(); Bukkit.getPluginManager().registerEvents(PageListener.INSTANCE, this); - logger.info("已注册 PageListener"); + simpleLogger.info("已注册 PageListener"); Bukkit.getPluginManager().registerEvents(CallbackListener.INSTANCE, this); - logger.info("已注册 CallbackListener"); + simpleLogger.info("已注册 CallbackListener"); Bukkit.getPluginManager().registerEvents(DebugListener.INSTANCE, this); - logger.info("已注册 DebugListener"); + simpleLogger.info("已注册 DebugListener"); long time = System.currentTimeMillis() - start; sync(() -> { PointAPI.reloadPlayerPointAPIHook(); VaultAPI.reloadVaultHook(); async(this::checkUpdate); }); - logger.info("仓鼠核心启动完成,总计耗时 " + time + " ms"); + simpleLogger.info("仓鼠核心启动完成,总计耗时 " + time + " ms"); } @Override public void onDisable() { long start = System.currentTimeMillis(); - Logger logger = getLogger(); - CoreAPI.getInstance().getJedisPool().close(); - logger.info("已关闭 Redis 连接池"); - CoreAPI.getInstance().getHikariDataSource().close(); - logger.info("已关闭数据库连接池"); + if (CoreAPI.getInstance().isEnableRedis()) { + CoreAPI.getInstance().getJedisPool().close(); + simpleLogger.info("已关闭 Redis 连接池"); + } + if (CoreAPI.getInstance().isEnableDatabase()) { + ((HikariDataSource) CoreAPI.getInstance().getDataSource()).close(); + simpleLogger.info("已关闭数据库连接池"); + } CoreAPI.getInstance().getExecutorService().shutdownNow(); - logger.info("已关闭 ExecutorService 线程池"); + simpleLogger.info("已关闭 ExecutorService 线程池"); CoreAPI.getInstance().getScheduledService().shutdownNow(); - logger.info("已关闭 ScheduledExecutorService 线程池"); + simpleLogger.info("已关闭 ScheduledExecutorService 线程池"); for (Player player : Bukkit.getOnlinePlayers()) { InventoryView view = player.getOpenInventory(); Inventory inventory = view.getTopInventory(); @@ -141,9 +146,9 @@ public class HamsterCorePlugin extends JavaPlugin { } player.closeInventory(); } - logger.info("已关闭所有玩家的界面"); + simpleLogger.info("已关闭所有玩家的界面"); long time = System.currentTimeMillis() - start; - logger.info("仓鼠核心已关闭,总计耗时 " + time + " ms"); + simpleLogger.info("仓鼠核心已关闭,总计耗时 " + time + " ms"); } private void checkUpdate() { diff --git a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/api/CoreBukkitAPI.java b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/api/CoreBukkitAPI.java index af17474..645bcc9 100644 --- a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/api/CoreBukkitAPI.java +++ b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/api/CoreBukkitAPI.java @@ -3,6 +3,7 @@ package cn.hamster3.mc.plugin.core.bukkit.api; import cn.hamster3.mc.plugin.core.bukkit.HamsterCorePlugin; import cn.hamster3.mc.plugin.core.bukkit.impl.ItemStackAdapter; import cn.hamster3.mc.plugin.core.bukkit.impl.PotionEffectAdapter; +import cn.hamster3.mc.plugin.core.bukkit.util.BukkitSimpleLogger; import cn.hamster3.mc.plugin.core.bukkit.util.MinecraftVersion; import cn.hamster3.mc.plugin.core.common.api.CoreAPI; import cn.hamster3.mc.plugin.core.common.config.ConfigSection; @@ -20,7 +21,6 @@ import org.jetbrains.annotations.NotNull; import java.io.File; import java.io.IOException; -import java.util.logging.Logger; @SuppressWarnings("unused") public final class CoreBukkitAPI extends CoreAPI { @@ -62,8 +62,8 @@ public final class CoreBukkitAPI extends CoreAPI { } @Override - public @NotNull Logger getLogger() { - return HamsterCorePlugin.getInstance().getLogger(); + public @NotNull BukkitSimpleLogger getLogger() { + return HamsterCorePlugin.getSimpleLogger(); } @Override diff --git a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/sub/YamlCommand.java b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/sub/YamlCommand.java index e8a9ad9..2694777 100644 --- a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/sub/YamlCommand.java +++ b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/core/sub/YamlCommand.java @@ -78,13 +78,13 @@ public class YamlCommand extends ChildCommand { config.set("test-item", stack); File dataFolder = new File(HamsterCorePlugin.getInstance().getDataFolder(), "yaml"); if (dataFolder.mkdirs()) { - HamsterCorePlugin.getInstance().getLogger().info("创建 yaml 存档文件夹"); + HamsterCorePlugin.getSimpleLogger().info("创建 yaml 存档文件夹"); } File saveFile = new File(dataFolder, sender.getName() + "_" + System.currentTimeMillis() + ".yml"); try { config.save(saveFile); } catch (IOException e) { - e.printStackTrace(); + HamsterCorePlugin.getSimpleLogger().error(e); } sender.sendMessage("§a信息已保存至文件 " + saveFile.getAbsolutePath()); return true; diff --git a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/hook/EconomyAPI.java b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/hook/EconomyAPI.java index 37a790e..6600a35 100644 --- a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/hook/EconomyAPI.java +++ b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/hook/EconomyAPI.java @@ -20,7 +20,7 @@ public class EconomyAPI { * @return true代表安装了,false代表未安装 */ public static boolean isSetupEconomy() { - return VaultAPI.isSetupVault() && VaultAPI.getEconomy() != null; + return VaultAPI.isVaultEnabled() && VaultAPI.getEconomy() != null; } /** diff --git a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/hook/PointAPI.java b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/hook/PointAPI.java index 55c78b2..edefe29 100644 --- a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/hook/PointAPI.java +++ b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/hook/PointAPI.java @@ -1,6 +1,7 @@ package cn.hamster3.mc.plugin.core.bukkit.hook; import cn.hamster3.mc.plugin.core.bukkit.HamsterCorePlugin; +import lombok.Getter; import org.black_ixx.playerpoints.PlayerPoints; import org.black_ixx.playerpoints.PlayerPointsAPI; import org.bukkit.Bukkit; @@ -14,6 +15,7 @@ import java.util.UUID; */ @SuppressWarnings("unused") public class PointAPI { + @Getter private static PlayerPointsAPI playerPointsAPI; private PointAPI() { @@ -25,20 +27,11 @@ public class PointAPI { public static void reloadPlayerPointAPIHook() { Plugin plugin = Bukkit.getPluginManager().getPlugin("PlayerPoints"); if (plugin == null) { - HamsterCorePlugin.getInstance().getLogger().warning("未检测到 PlayerPointAPI 插件"); + HamsterCorePlugin.getSimpleLogger().warn("未检测到 PlayerPointAPI 插件"); return; } playerPointsAPI = ((PlayerPoints) plugin).getAPI(); - HamsterCorePlugin.getInstance().getLogger().info("PlayerPointAPI 挂接成功"); - } - - /** - * 获取 PlayerPointsAPI 实例 - * - * @return PlayerPointsAPI 实例 - */ - public static PlayerPointsAPI getPlayerPointsAPI() { - return playerPointsAPI; + HamsterCorePlugin.getSimpleLogger().info("PlayerPointAPI 挂接成功"); } /** diff --git a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/hook/VaultAPI.java b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/hook/VaultAPI.java index 0c7c12f..df73b29 100644 --- a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/hook/VaultAPI.java +++ b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/hook/VaultAPI.java @@ -1,22 +1,27 @@ package cn.hamster3.mc.plugin.core.bukkit.hook; import cn.hamster3.mc.plugin.core.bukkit.HamsterCorePlugin; +import cn.hamster3.mc.plugin.core.bukkit.util.BukkitSimpleLogger; +import lombok.Getter; import net.milkbowl.vault.chat.Chat; import net.milkbowl.vault.economy.Economy; import net.milkbowl.vault.permission.Permission; import org.bukkit.Bukkit; import org.bukkit.plugin.RegisteredServiceProvider; -import java.util.logging.Logger; - /** * Vault API */ +@Getter @SuppressWarnings("unused") public class VaultAPI { + @Getter private static boolean vaultEnabled; + @Getter private static Chat chat; + @Getter private static Economy economy; + @Getter private static Permission permission; private VaultAPI() { @@ -27,9 +32,9 @@ public class VaultAPI { economy = null; permission = null; vaultEnabled = Bukkit.getPluginManager().isPluginEnabled("Vault"); - Logger logger = HamsterCorePlugin.getInstance().getLogger(); + BukkitSimpleLogger logger = HamsterCorePlugin.getSimpleLogger(); if (!vaultEnabled) { - logger.warning("未检测到 Vault 插件"); + logger.warn("未检测到 Vault 插件"); return; } logger.info("已连接 Vault"); @@ -40,7 +45,7 @@ public class VaultAPI { chat = chatProvider.getProvider(); logger.info("聊天系统挂接成功"); } else { - logger.warning("未检测到聊天系统"); + logger.warn("未检测到聊天系统"); } RegisteredServiceProvider economyProvider = Bukkit.getServer().getServicesManager().getRegistration(Economy.class); @@ -48,7 +53,7 @@ public class VaultAPI { economy = economyProvider.getProvider(); logger.info("经济系统挂接成功"); } else { - logger.warning("未检测到经济系统"); + logger.warn("未检测到经济系统"); } RegisteredServiceProvider permissionProvider = Bukkit.getServer().getServicesManager().getRegistration(Permission.class); @@ -56,45 +61,9 @@ public class VaultAPI { permission = permissionProvider.getProvider(); logger.info("权限系统挂接成功"); } else { - logger.warning("未检测到权限插件"); + logger.warn("未检测到权限插件"); } logger.info("已完成 VaultAPI 挂载"); } - /** - * 返回服务器是否安装了 Vault 插件 - * - * @return true 代表服务器已安装 - */ - public static boolean isSetupVault() { - return vaultEnabled; - } - - /** - * 返回 Vault 的 Chat 前置系统 - * - * @return Chat 系统 - */ - public static Chat getChat() { - return chat; - } - - /** - * 返回 Vault 的 Economy 前置系统 - * - * @return Economy 系统 - */ - public static Economy getEconomy() { - return economy; - } - - /** - * 返回 Vault 的 Permission 前置系统 - * - * @return Permission 系统 - */ - public static Permission getPermission() { - return permission; - } - -} +} \ No newline at end of file diff --git a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/ButtonGroup.java b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/ButtonGroup.java index 07e59dc..d77ad06 100644 --- a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/ButtonGroup.java +++ b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/ButtonGroup.java @@ -188,8 +188,8 @@ public class ButtonGroup { @Override public String toString() { return "ButtonGroup{" + - "name='" + name + '\'' + - ", buttonNameMap=" + buttonNameMap + - '}'; + "name='" + name + '\'' + + ", buttonNameMap=" + buttonNameMap + + '}'; } } diff --git a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/PageConfig.java b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/PageConfig.java index 928f599..9ca0df9 100644 --- a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/PageConfig.java +++ b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/PageConfig.java @@ -98,8 +98,7 @@ public class PageConfig implements InventoryHolder { try { buttonSounds.put(key, Sound.valueOf(soundName)); } catch (Exception e) { - HamsterCorePlugin.getInstance().getLogger().warning("初始化 PageConfig 时遇到了一个异常:"); - e.printStackTrace(); + HamsterCorePlugin.getSimpleLogger().error(e, "初始化 PageConfig 时遇到了一个异常: "); } } } @@ -197,10 +196,10 @@ public class PageConfig implements InventoryHolder { @Override public String toString() { return "PageConfig{" + - ", title='" + title + '\'' + - ", graphic=" + graphic + - ", buttonMap=" + buttons + - ", buttonGroups=" + buttonGroups + - '}'; + ", title='" + title + '\'' + + ", graphic=" + graphic + + ", buttonMap=" + buttons + + ", buttonGroups=" + buttonGroups + + '}'; } } diff --git a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/listener/PageListener.java b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/listener/PageListener.java index e0a82bc..493be4b 100644 --- a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/listener/PageListener.java +++ b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/listener/PageListener.java @@ -39,8 +39,7 @@ public class PageListener implements Listener { try { pageHandler.onClick(event); } catch (Exception e) { - HamsterCorePlugin.getInstance().getLogger().warning(String.format("执行 %s 的 onClick(event) 时遇到了一个异常: ", pageHandler.getClass().getName())); - e.printStackTrace(); + HamsterCorePlugin.getSimpleLogger().warn(e, "执行 %s 的 onClick(event) 时遇到了一个异常: ", pageHandler.getClass().getName()); } if (event.isCancelled()) { return; @@ -55,31 +54,29 @@ public class PageListener implements Listener { try { pageHandler.onClickInside(event); } catch (Exception e) { - HamsterCorePlugin.getInstance().getLogger().warning(String.format("执行 %s 的 onClickInside(event) 时遇到了一个异常: ", pageHandler.getClass().getName())); - e.printStackTrace(); + HamsterCorePlugin.getSimpleLogger().warn(e, "执行 %s 的 onClickInside(event) 时遇到了一个异常: ", pageHandler.getClass().getName()); } try { pageHandler.onClickInside(event.getClick(), event.getAction(), index); } catch (Exception e) { - HamsterCorePlugin.getInstance().getLogger().warning(String.format( + HamsterCorePlugin.getSimpleLogger().warn(e, "执行 %s 的 onClickInside(%s, %s, %d) 时遇到了一个异常: ", pageHandler.getClass().getName(), event.getClick().name(), event.getAction().name(), index - )); - e.printStackTrace(); + ); } try { pageHandler.onPlayButtonSound(event.getClick(), event.getAction(), index); } catch (Exception e) { - HamsterCorePlugin.getInstance().getLogger().warning(String.format( + HamsterCorePlugin.getSimpleLogger().warn(e, "执行 %s 的 onPlayButtonSound(%s, %s, %d) 时遇到了一个异常: ", pageHandler.getClass().getName(), event.getClick().name(), event.getAction().name(), index - )); + ); } } @@ -93,8 +90,7 @@ public class PageListener implements Listener { try { pageHandler.onDrag(event); } catch (Exception e) { - HamsterCorePlugin.getInstance().getLogger().warning(String.format("执行 %s 的 onDrag(event) 时遇到了一个异常: ", pageHandler.getClass().getName())); - e.printStackTrace(); + HamsterCorePlugin.getSimpleLogger().warn(e, "执行 %s 的 onDrag(event) 时遇到了一个异常: ", pageHandler.getClass().getName()); } if (event.isCancelled()) { return; diff --git a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/util/BukkitSimpleLogger.java b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/util/BukkitSimpleLogger.java new file mode 100644 index 0000000..fd0db59 --- /dev/null +++ b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/util/BukkitSimpleLogger.java @@ -0,0 +1,38 @@ +package cn.hamster3.mc.plugin.core.bukkit.util; + +import cn.hamster3.mc.plugin.core.common.util.SimpleLogger; +import lombok.Getter; +import org.bukkit.plugin.Plugin; +import org.jetbrains.annotations.NotNull; + +import java.util.logging.Level; +import java.util.logging.Logger; + +@Getter +@SuppressWarnings("unused") +public class BukkitSimpleLogger extends SimpleLogger { + @NotNull + private final Plugin plugin; + @NotNull + private final Logger logger; + + public BukkitSimpleLogger(@NotNull Plugin plugin) { + this.plugin = plugin; + logger = plugin.getLogger(); + } + + @Override + public void log(@NotNull Level level, @NotNull String msg) { + logger.log(level, msg); + } + + @Override + public void log(@NotNull Level level, @NotNull Throwable throwable) { + logger.log(level, "", throwable); + } + + @Override + public void log(@NotNull Level level, @NotNull Throwable throwable, @NotNull String msg) { + logger.log(level, msg, throwable); + } +} diff --git a/core-bukkit/src/main/resources/config.yml b/core-bukkit/src/main/resources/config.yml index 0babd79..f170fbe 100644 --- a/core-bukkit/src/main/resources/config.yml +++ b/core-bukkit/src/main/resources/config.yml @@ -1,3 +1,6 @@ +# 是否启用 redis 连接池功能 +enable-redis: false + # redis 连接配置 # 完整格式如下: # redis://用户名:密码@主机名:端口/数据库索引?参数名=参数值&参数名=参数值 @@ -8,6 +11,10 @@ # 若不设置数据库,则默认使用 0 redis-url: "redis://localhost:6379/0?clientName=HamsterCore&timeout=5s" +# 是否启用数据库连接池功能 +enable-database: false + +# 数据库连接池配置 datasource: # 数据库链接驱动地址,旧版服务端(低于1.13)请使用:com.mysql.jdbc.Driver driver: "com.mysql.cj.jdbc.Driver" diff --git a/core-bungee/src/main/java/cn/hamster3/mc/plugin/core/bungee/HamsterCorePlugin.java b/core-bungee/src/main/java/cn/hamster3/mc/plugin/core/bungee/HamsterCorePlugin.java index bed756f..02a4584 100644 --- a/core-bungee/src/main/java/cn/hamster3/mc/plugin/core/bungee/HamsterCorePlugin.java +++ b/core-bungee/src/main/java/cn/hamster3/mc/plugin/core/bungee/HamsterCorePlugin.java @@ -1,10 +1,12 @@ package cn.hamster3.mc.plugin.core.bungee; import cn.hamster3.mc.plugin.core.bungee.api.CoreBungeeAPI; +import cn.hamster3.mc.plugin.core.bungee.util.BungeeSimpleLogger; import cn.hamster3.mc.plugin.core.common.api.CoreAPI; import cn.hamster3.mc.plugin.core.common.config.ConfigSection; import cn.hamster3.mc.plugin.core.common.config.YamlConfig; import cn.hamster3.mc.plugin.core.common.util.UpdateCheckUtils; +import com.zaxxer.hikari.HikariDataSource; import lombok.Getter; import net.kyori.adventure.platform.bungeecord.BungeeAudiences; import net.md_5.bungee.api.ProxyServer; @@ -18,24 +20,25 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.util.logging.Level; -import java.util.logging.Logger; public class HamsterCorePlugin extends Plugin { @Getter private static HamsterCorePlugin instance; @Getter + private static BungeeSimpleLogger simpleLogger; + @Getter private BungeeAudiences audienceProvider; @Override public void onLoad() { instance = this; + simpleLogger = new BungeeSimpleLogger(this); long start = System.currentTimeMillis(); - Logger logger = getLogger(); - logger.info("仓鼠核心正在初始化"); + simpleLogger.info("仓鼠核心正在初始化"); try { File dataFolder = getDataFolder(); if (dataFolder.mkdir()) { - logger.info("已生成插件存档文件夹"); + simpleLogger.info("已生成插件存档文件夹"); } File configFile = new File(dataFolder, "config.yml"); if (!configFile.exists()) { @@ -46,40 +49,42 @@ public class HamsterCorePlugin extends Plugin { } } CoreBungeeAPI.init(configFile); - logger.info("已初始化 CoreAPI"); + simpleLogger.info("已初始化 CoreAPI"); } catch (Exception e) { - logger.log(Level.WARNING, "初始化 CoreAPI 出错", e); + simpleLogger.log(Level.WARNING, "初始化 CoreAPI 出错", e); } long time = System.currentTimeMillis() - start; - logger.info("仓鼠核心初始化完成,总计耗时 " + time + " ms"); + simpleLogger.info("仓鼠核心初始化完成,总计耗时 " + time + " ms"); } @Override public void onEnable() { long start = System.currentTimeMillis(); - Logger logger = getLogger(); - logger.info("仓鼠核心正在启动"); + simpleLogger.info("仓鼠核心正在启动"); audienceProvider = BungeeAudiences.create(this); - logger.info("已创建 AudienceProvider"); + simpleLogger.info("已创建 AudienceProvider"); CoreAPI.getInstance().getExecutorService().submit(this::checkUpdate); long time = System.currentTimeMillis() - start; - logger.info("仓鼠核心启动完成,总计耗时 " + time + " ms"); + simpleLogger.info("仓鼠核心启动完成,总计耗时 " + time + " ms"); } @Override public void onDisable() { long start = System.currentTimeMillis(); - Logger logger = getLogger(); - CoreAPI.getInstance().getJedisPool().close(); - logger.info("已关闭 Redis 连接池"); - CoreAPI.getInstance().getHikariDataSource().close(); - logger.info("已关闭数据库连接池"); + if (CoreAPI.getInstance().isEnableRedis()) { + CoreAPI.getInstance().getJedisPool().close(); + simpleLogger.info("已关闭 Redis 连接池"); + } + if (CoreAPI.getInstance().isEnableDatabase()) { + ((HikariDataSource) CoreAPI.getInstance().getDataSource()).close(); + simpleLogger.info("已关闭数据库连接池"); + } CoreAPI.getInstance().getExecutorService().shutdownNow(); - logger.info("已关闭 ExecutorService 线程池"); + simpleLogger.info("已关闭 ExecutorService 线程池"); CoreAPI.getInstance().getScheduledService().shutdownNow(); - logger.info("已关闭 ScheduledExecutorService 线程池"); + simpleLogger.info("已关闭 ScheduledExecutorService 线程池"); long time = System.currentTimeMillis() - start; - logger.info("仓鼠核心已关闭,总计耗时 " + time + " ms"); + simpleLogger.info("仓鼠核心已关闭,总计耗时 " + time + " ms"); } private void checkUpdate() { diff --git a/core-bungee/src/main/java/cn/hamster3/mc/plugin/core/bungee/api/CoreBungeeAPI.java b/core-bungee/src/main/java/cn/hamster3/mc/plugin/core/bungee/api/CoreBungeeAPI.java index 147bad5..d811d9f 100644 --- a/core-bungee/src/main/java/cn/hamster3/mc/plugin/core/bungee/api/CoreBungeeAPI.java +++ b/core-bungee/src/main/java/cn/hamster3/mc/plugin/core/bungee/api/CoreBungeeAPI.java @@ -1,6 +1,7 @@ package cn.hamster3.mc.plugin.core.bungee.api; import cn.hamster3.mc.plugin.core.bungee.HamsterCorePlugin; +import cn.hamster3.mc.plugin.core.bungee.util.BungeeSimpleLogger; import cn.hamster3.mc.plugin.core.common.api.CoreAPI; import cn.hamster3.mc.plugin.core.common.config.ConfigSection; import cn.hamster3.mc.plugin.core.common.config.YamlConfig; @@ -15,7 +16,6 @@ import org.jetbrains.annotations.NotNull; import java.io.File; import java.io.IOException; -import java.util.logging.Logger; @SuppressWarnings("unused") public final class CoreBungeeAPI extends CoreAPI { @@ -51,8 +51,8 @@ public final class CoreBungeeAPI extends CoreAPI { } @Override - public @NotNull Logger getLogger() { - return HamsterCorePlugin.getInstance().getLogger(); + public @NotNull BungeeSimpleLogger getLogger() { + return HamsterCorePlugin.getSimpleLogger(); } @Override diff --git a/core-bungee/src/main/java/cn/hamster3/mc/plugin/core/bungee/util/BungeePluginLogger.java b/core-bungee/src/main/java/cn/hamster3/mc/plugin/core/bungee/util/BungeePluginLogger.java deleted file mode 100644 index 4a7e8a4..0000000 --- a/core-bungee/src/main/java/cn/hamster3/mc/plugin/core/bungee/util/BungeePluginLogger.java +++ /dev/null @@ -1,100 +0,0 @@ -package cn.hamster3.mc.plugin.core.bungee.util; - -import lombok.Getter; -import net.md_5.bungee.api.plugin.Plugin; -import org.jetbrains.annotations.NotNull; - -import java.util.Arrays; -import java.util.logging.Level; -import java.util.logging.Logger; - -@Getter -@SuppressWarnings("unused") -public class BungeePluginLogger { - @NotNull - private final Plugin plugin; - @NotNull - private final Logger logger; - - public BungeePluginLogger(@NotNull Plugin plugin) { - this.plugin = plugin; - logger = plugin.getLogger(); - } - - public void log(@NotNull Level level, @NotNull String msg) { - logger.log(level, msg); - } - - public void log(@NotNull Level level, @NotNull String msg, @NotNull Object... args) { - try { - logger.log(level, String.format(msg, args)); - } catch (Exception e) { - logger.log(Level.WARNING, "输出日志 " + msg + " 时遇到一个异常"); - logger.log(Level.WARNING, "日志参数: " + Arrays.toString(args)); - logger.log(Level.WARNING, "异常信息: ", e); - } - } - - public void log(@NotNull Level level, @NotNull Throwable throwable, @NotNull String msg) { - logger.log(level, msg, throwable); - } - - public void log(@NotNull Level level, @NotNull Throwable throwable, @NotNull String msg, @NotNull Object... args) { - try { - logger.log(level, String.format(msg, args), throwable); - } catch (Exception e) { - logger.log(Level.WARNING, "输出日志 " + msg + " 时遇到一个异常"); - logger.log(Level.WARNING, "日志参数: " + Arrays.toString(args)); - logger.log(Level.WARNING, "异常参数: ", throwable); - logger.log(Level.WARNING, "异常信息: ", e); - } - } - - public void info(@NotNull String msg) { - log(Level.INFO, msg); - } - - public void info(@NotNull String msg, @NotNull Object... args) { - log(Level.INFO, msg, args); - } - - public void info(@NotNull Throwable throwable, @NotNull String msg) { - log(Level.INFO, throwable, msg); - } - - public void info(@NotNull Throwable throwable, @NotNull String msg, @NotNull Object... args) { - log(Level.INFO, throwable, msg, args); - } - - public void warn(@NotNull String msg) { - log(Level.WARNING, msg); - } - - public void warn(@NotNull String msg, @NotNull Object... args) { - log(Level.WARNING, msg, args); - } - - public void warn(@NotNull Throwable throwable, @NotNull String msg) { - log(Level.WARNING, throwable, msg); - } - - public void warn(@NotNull Throwable throwable, @NotNull String msg, @NotNull Object... args) { - log(Level.WARNING, throwable, msg, args); - } - - public void error(@NotNull String msg) { - log(Level.SEVERE, msg); - } - - public void error(@NotNull String msg, @NotNull Object... args) { - log(Level.SEVERE, msg, args); - } - - public void error(@NotNull Throwable throwable, @NotNull String msg) { - log(Level.SEVERE, throwable, msg); - } - - public void error(@NotNull Throwable throwable, @NotNull String msg, @NotNull Object... args) { - log(Level.SEVERE, throwable, msg, args); - } -} diff --git a/core-bungee/src/main/java/cn/hamster3/mc/plugin/core/bungee/util/BungeeSimpleLogger.java b/core-bungee/src/main/java/cn/hamster3/mc/plugin/core/bungee/util/BungeeSimpleLogger.java new file mode 100644 index 0000000..8d18a42 --- /dev/null +++ b/core-bungee/src/main/java/cn/hamster3/mc/plugin/core/bungee/util/BungeeSimpleLogger.java @@ -0,0 +1,38 @@ +package cn.hamster3.mc.plugin.core.bungee.util; + +import cn.hamster3.mc.plugin.core.common.util.SimpleLogger; +import lombok.Getter; +import net.md_5.bungee.api.plugin.Plugin; +import org.jetbrains.annotations.NotNull; + +import java.util.logging.Level; +import java.util.logging.Logger; + +@Getter +@SuppressWarnings("unused") +public class BungeeSimpleLogger extends SimpleLogger { + @NotNull + private final Plugin plugin; + @NotNull + private final Logger logger; + + public BungeeSimpleLogger(@NotNull Plugin plugin) { + this.plugin = plugin; + logger = plugin.getLogger(); + } + + @Override + public void log(@NotNull Level level, @NotNull String msg) { + logger.log(level, msg); + } + + @Override + public void log(@NotNull Level level, @NotNull Throwable throwable) { + logger.log(level, "", throwable); + } + + @Override + public void log(@NotNull Level level, @NotNull Throwable throwable, @NotNull String msg) { + logger.log(level, msg, throwable); + } +} diff --git a/core-common/src/main/java/cn/hamster3/mc/plugin/core/common/api/CoreAPI.java b/core-common/src/main/java/cn/hamster3/mc/plugin/core/common/api/CoreAPI.java index 83dbeec..6676b08 100644 --- a/core-common/src/main/java/cn/hamster3/mc/plugin/core/common/api/CoreAPI.java +++ b/core-common/src/main/java/cn/hamster3/mc/plugin/core/common/api/CoreAPI.java @@ -3,11 +3,13 @@ package cn.hamster3.mc.plugin.core.common.api; import cn.hamster3.mc.plugin.core.common.config.ConfigSection; import cn.hamster3.mc.plugin.core.common.thread.NamedThreadFactory; import cn.hamster3.mc.plugin.core.common.util.CoreUtils; +import cn.hamster3.mc.plugin.core.common.util.SimpleLogger; import com.google.gson.Gson; import com.zaxxer.hikari.HikariDataSource; import lombok.Getter; import net.kyori.adventure.platform.AudienceProvider; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import redis.clients.jedis.JedisPool; import javax.sql.DataSource; @@ -16,50 +18,62 @@ import java.sql.SQLException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; -import java.util.logging.Logger; +@Getter @SuppressWarnings("unused") public abstract class CoreAPI { @Getter protected static CoreAPI instance; - /** - * Redis 连接池 - */ - @Getter - @NotNull - private final JedisPool jedisPool; - /** - * 公用数据库连接池 - */ - @Getter - @NotNull - private final HikariDataSource hikariDataSource; + private final boolean enableRedis; + private final boolean enableDatabase; /** * 异步线程池 */ - @Getter + @NotNull private final ExecutorService executorService; /** * 调度器线程池 */ - @Getter + @NotNull private final ScheduledExecutorService scheduledService; + /** + * 公用 Redis 连接池 + */ + @Nullable + private JedisPool jedisPool; + /** + * 公用数据库连接池 + */ + @Nullable + private HikariDataSource hikariDataSource; public CoreAPI(@NotNull ConfigSection config) { + SimpleLogger logger = getLogger(); executorService = Executors.newCachedThreadPool(new NamedThreadFactory("HamsterCore - Executor")); scheduledService = Executors.newScheduledThreadPool(1, new NamedThreadFactory("HamsterCore - Scheduler")); + logger.info("已创建线程池"); - getLogger().info("正在创建 Redis 连接池"); - jedisPool = new JedisPool(config.getString("redis-url")); - getLogger().info("Redis 连接池创建完成"); - - ConfigSection datasourceConfig = config.getSection("datasource"); - if (datasourceConfig == null) { - throw new IllegalArgumentException("配置文件中未找到 datasource 节点"); + enableRedis = config.getBoolean("enable-redis", true); + if (enableRedis) { + logger.info("正在创建 Redis 连接池"); + jedisPool = new JedisPool(config.getString("redis-url")); + logger.info("Redis 连接池创建完成"); + } else { + logger.info("未启用 Redis 功能"); + } + + enableDatabase = config.getBoolean("enable-database", true); + if (enableDatabase) { + ConfigSection datasourceConfig = config.getSection("datasource"); + if (datasourceConfig == null) { + throw new IllegalArgumentException("配置文件中未找到 datasource 节点"); + } + logger.info("正在创建数据库连接池"); + hikariDataSource = (HikariDataSource) CoreUtils.getDataSource(datasourceConfig); + logger.info("数据库连接池创建完成"); + } else { + logger.info("未启用数据库功能"); } - getLogger().info("正在创建数据库连接池"); - hikariDataSource = (HikariDataSource) CoreUtils.getDataSource(datasourceConfig); - getLogger().info("数据库连接池创建完成"); } /** @@ -69,7 +83,10 @@ public abstract class CoreAPI { */ @NotNull public DataSource getDataSource() { - return hikariDataSource; + if (hikariDataSource != null) { + return hikariDataSource; + } + throw new IllegalStateException("仓鼠核心未启用数据库功能"); } /** @@ -84,7 +101,15 @@ public abstract class CoreAPI { } @NotNull - public abstract Logger getLogger(); + public JedisPool getJedisPool() { + if (jedisPool != null) { + return jedisPool; + } + throw new IllegalStateException("仓鼠核心未启用 Redis 功能"); + } + + @NotNull + public abstract SimpleLogger getLogger(); /** * @return GSON 工具 diff --git a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/util/BukkitPluginLogger.java b/core-common/src/main/java/cn/hamster3/mc/plugin/core/common/util/SimpleLogger.java similarity index 60% rename from core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/util/BukkitPluginLogger.java rename to core-common/src/main/java/cn/hamster3/mc/plugin/core/common/util/SimpleLogger.java index f58517c..9ac29ce 100644 --- a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/util/BukkitPluginLogger.java +++ b/core-common/src/main/java/cn/hamster3/mc/plugin/core/common/util/SimpleLogger.java @@ -1,52 +1,38 @@ -package cn.hamster3.mc.plugin.core.bukkit.util; +package cn.hamster3.mc.plugin.core.common.util; import lombok.Getter; -import org.bukkit.plugin.Plugin; import org.jetbrains.annotations.NotNull; import java.util.Arrays; import java.util.logging.Level; -import java.util.logging.Logger; @Getter @SuppressWarnings("unused") -public class BukkitPluginLogger { - @NotNull - private final Plugin plugin; - @NotNull - private final Logger logger; +public abstract class SimpleLogger { + public abstract void log(@NotNull Level level, @NotNull String msg); - public BukkitPluginLogger(@NotNull Plugin plugin) { - this.plugin = plugin; - logger = plugin.getLogger(); - } + public abstract void log(@NotNull Level level, @NotNull Throwable throwable); - public void log(@NotNull Level level, @NotNull String msg) { - logger.log(level, msg); - } + public abstract void log(@NotNull Level level, @NotNull Throwable throwable, @NotNull String msg); public void log(@NotNull Level level, @NotNull String msg, @NotNull Object... args) { try { - logger.log(level, String.format(msg, args)); + log(level, String.format(msg, args)); } catch (Exception e) { - logger.log(Level.WARNING, "输出日志 " + msg + " 时遇到一个异常"); - logger.log(Level.WARNING, "日志参数: " + Arrays.toString(args)); - logger.log(Level.WARNING, "异常信息: ", e); + log(Level.WARNING, "输出日志 " + msg + " 时遇到一个异常"); + log(Level.WARNING, "日志参数: " + Arrays.toString(args)); + log(Level.WARNING, "异常信息: ", e); } } - public void log(@NotNull Level level, @NotNull Throwable throwable, @NotNull String msg) { - logger.log(level, msg, throwable); - } - public void log(@NotNull Level level, @NotNull Throwable throwable, @NotNull String msg, @NotNull Object... args) { try { - logger.log(level, String.format(msg, args), throwable); + log(level, String.format(msg, args), throwable); } catch (Exception e) { - logger.log(Level.WARNING, "输出日志 " + msg + " 时遇到一个异常"); - logger.log(Level.WARNING, "日志参数: " + Arrays.toString(args)); - logger.log(Level.WARNING, "异常参数: ", throwable); - logger.log(Level.WARNING, "异常信息: ", e); + log(Level.WARNING, "输出日志 " + msg + " 时遇到一个异常"); + log(Level.WARNING, "日志参数: " + Arrays.toString(args)); + log(Level.WARNING, "异常参数: ", throwable); + log(Level.WARNING, "异常信息: ", e); } } @@ -58,6 +44,10 @@ public class BukkitPluginLogger { log(Level.INFO, msg, args); } + public void info(@NotNull Throwable throwable) { + log(Level.INFO, throwable); + } + public void info(@NotNull Throwable throwable, @NotNull String msg) { log(Level.INFO, throwable, msg); } @@ -74,6 +64,10 @@ public class BukkitPluginLogger { log(Level.WARNING, msg, args); } + public void warn(@NotNull Throwable throwable) { + log(Level.WARNING, throwable); + } + public void warn(@NotNull Throwable throwable, @NotNull String msg) { log(Level.WARNING, throwable, msg); } @@ -90,6 +84,10 @@ public class BukkitPluginLogger { log(Level.SEVERE, msg, args); } + public void error(@NotNull Throwable throwable) { + log(Level.SEVERE, throwable); + } + public void error(@NotNull Throwable throwable, @NotNull String msg) { log(Level.SEVERE, throwable, msg); } diff --git a/core-velocity/src/main/java/cn/hamster3/mc/plugin/core/velocity/HamsterCorePlugin.java b/core-velocity/src/main/java/cn/hamster3/mc/plugin/core/velocity/HamsterCorePlugin.java index 98a3342..fe013bf 100644 --- a/core-velocity/src/main/java/cn/hamster3/mc/plugin/core/velocity/HamsterCorePlugin.java +++ b/core-velocity/src/main/java/cn/hamster3/mc/plugin/core/velocity/HamsterCorePlugin.java @@ -4,6 +4,7 @@ import cn.hamster3.mc.plugin.core.common.api.CoreAPI; import cn.hamster3.mc.plugin.core.common.config.YamlConfig; import cn.hamster3.mc.plugin.core.common.util.UpdateCheckUtils; import cn.hamster3.mc.plugin.core.velocity.api.CoreVelocityAPI; +import cn.hamster3.mc.plugin.core.velocity.util.VelocitySimpleLogger; import com.google.inject.Inject; import com.velocitypowered.api.event.PostOrder; import com.velocitypowered.api.event.Subscribe; @@ -36,25 +37,22 @@ public class HamsterCorePlugin { @Getter private static HamsterCorePlugin instance; @Getter - private final java.util.logging.Logger logger; - @Getter - private final Logger slf4jLogger; + private final VelocitySimpleLogger simpleLogger; @Getter private final ProxyServer proxyServer; @Getter private final File dataFolder; @Inject - public HamsterCorePlugin(Logger slf4jLogger, ProxyServer proxyServer, @DataDirectory Path dataPath) { - logger = java.util.logging.Logger.getLogger("hamster-core"); - this.slf4jLogger = slf4jLogger; + public HamsterCorePlugin(Logger logger, ProxyServer proxyServer, @DataDirectory Path dataPath) { + this.simpleLogger = new VelocitySimpleLogger(logger); this.proxyServer = proxyServer; dataFolder = dataPath.toFile(); instance = this; long start = System.currentTimeMillis(); try { if (dataFolder.mkdir()) { - slf4jLogger.info("已生成插件存档文件夹"); + simpleLogger.info("已生成插件存档文件夹"); } File configFile = new File(dataFolder, "config.yml"); if (!configFile.exists()) { @@ -65,38 +63,40 @@ public class HamsterCorePlugin { } } CoreVelocityAPI.init(configFile); - slf4jLogger.info("已初始化 CoreAPI"); + simpleLogger.info("已初始化 CoreAPI"); } catch (Exception e) { - slf4jLogger.error("初始化 CoreAPI 出错", e); + simpleLogger.error("初始化 CoreAPI 出错", e); } long time = System.currentTimeMillis() - start; - slf4jLogger.info("仓鼠核心初始化完成,总计耗时 " + time + " ms"); + simpleLogger.info("仓鼠核心初始化完成,总计耗时 " + time + " ms"); } @Subscribe(order = PostOrder.FIRST) public void onProxyInitialization(ProxyInitializeEvent event) { long start = System.currentTimeMillis(); - slf4jLogger.info("仓鼠核心正在启动"); + simpleLogger.info("仓鼠核心正在启动"); CoreAPI.getInstance().getExecutorService().submit(this::checkUpdate); long time = System.currentTimeMillis() - start; - slf4jLogger.info("仓鼠核心启动完成,总计耗时 " + time + " ms"); + simpleLogger.info("仓鼠核心启动完成,总计耗时 " + time + " ms"); } @Subscribe(order = PostOrder.LAST) public void onProxyShutdown(ProxyShutdownEvent event) { long start = System.currentTimeMillis(); - CoreAPI.getInstance().getJedisPool().close(); - slf4jLogger.info("已关闭 Redis 连接池"); - if (CoreAPI.getInstance().getDataSource() instanceof HikariDataSource dataSource) { - dataSource.close(); - slf4jLogger.info("已关闭数据库连接池"); + if (CoreAPI.getInstance().isEnableRedis()) { + CoreAPI.getInstance().getJedisPool().close(); + simpleLogger.info("已关闭 Redis 连接池"); + } + if (CoreAPI.getInstance().isEnableDatabase()) { + ((HikariDataSource) CoreAPI.getInstance().getDataSource()).close(); + simpleLogger.info("已关闭数据库连接池"); } CoreAPI.getInstance().getExecutorService().shutdownNow(); - slf4jLogger.info("已关闭 ExecutorService 线程池"); + simpleLogger.info("已关闭 ExecutorService 线程池"); CoreAPI.getInstance().getScheduledService().shutdownNow(); - slf4jLogger.info("已关闭 ScheduledExecutorService 线程池"); + simpleLogger.info("已关闭 ScheduledExecutorService 线程池"); long time = System.currentTimeMillis() - start; - slf4jLogger.info("仓鼠核心关闭完成,总计耗时 " + time + " ms"); + simpleLogger.info("仓鼠核心已关闭,总计耗时 " + time + " ms"); } private void checkUpdate() { diff --git a/core-velocity/src/main/java/cn/hamster3/mc/plugin/core/velocity/api/CoreVelocityAPI.java b/core-velocity/src/main/java/cn/hamster3/mc/plugin/core/velocity/api/CoreVelocityAPI.java index d28eab8..02274a9 100644 --- a/core-velocity/src/main/java/cn/hamster3/mc/plugin/core/velocity/api/CoreVelocityAPI.java +++ b/core-velocity/src/main/java/cn/hamster3/mc/plugin/core/velocity/api/CoreVelocityAPI.java @@ -8,6 +8,7 @@ import cn.hamster3.mc.plugin.core.common.impl.ComponentTypeAdapter; import cn.hamster3.mc.plugin.core.common.impl.MessageTypeAdapter; import cn.hamster3.mc.plugin.core.velocity.HamsterCorePlugin; import cn.hamster3.mc.plugin.core.velocity.impl.AudienceProviderImpl; +import cn.hamster3.mc.plugin.core.velocity.util.VelocitySimpleLogger; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import net.kyori.adventure.platform.AudienceProvider; @@ -16,7 +17,6 @@ import org.jetbrains.annotations.NotNull; import java.io.File; import java.io.IOException; -import java.util.logging.Logger; @SuppressWarnings("unused") public final class CoreVelocityAPI extends CoreAPI { @@ -57,8 +57,8 @@ public final class CoreVelocityAPI extends CoreAPI { } @Override - public @NotNull Logger getLogger() { - return HamsterCorePlugin.getInstance().getLogger(); + public @NotNull VelocitySimpleLogger getLogger() { + return HamsterCorePlugin.getInstance().getSimpleLogger(); } @Override diff --git a/core-velocity/src/main/java/cn/hamster3/mc/plugin/core/velocity/util/VelocitySimpleLogger.java b/core-velocity/src/main/java/cn/hamster3/mc/plugin/core/velocity/util/VelocitySimpleLogger.java new file mode 100644 index 0000000..8f0810e --- /dev/null +++ b/core-velocity/src/main/java/cn/hamster3/mc/plugin/core/velocity/util/VelocitySimpleLogger.java @@ -0,0 +1,57 @@ +package cn.hamster3.mc.plugin.core.velocity.util; + +import cn.hamster3.mc.plugin.core.common.util.SimpleLogger; +import lombok.Getter; +import org.jetbrains.annotations.NotNull; +import org.slf4j.Logger; + +import java.util.logging.Level; + +@Getter +public class VelocitySimpleLogger extends SimpleLogger { + @NotNull + private final Logger logger; + + public VelocitySimpleLogger(@NotNull Logger logger) { + this.logger = logger; + } + + @Override + public void log(@NotNull Level level, @NotNull String msg) { + if (level == Level.INFO) { + logger.info(msg); + } else if (level == Level.WARNING) { + logger.warn(msg); + } else if (level == Level.SEVERE) { + logger.error(msg); + } else { + logger.trace(msg); + } + } + + @Override + public void log(@NotNull Level level, @NotNull Throwable throwable) { + if (level == Level.INFO) { + logger.info("", throwable); + } else if (level == Level.WARNING) { + logger.warn("", throwable); + } else if (level == Level.SEVERE) { + logger.error("", throwable); + } else { + logger.trace("", throwable); + } + } + + @Override + public void log(@NotNull Level level, @NotNull Throwable throwable, @NotNull String msg) { + if (level == Level.INFO) { + logger.info(msg, throwable); + } else if (level == Level.WARNING) { + logger.warn(msg, throwable); + } else if (level == Level.SEVERE) { + logger.error(msg, throwable); + } else { + logger.trace(msg, throwable); + } + } +}