feat: 完成 SimpleLogger
This commit is contained in:
@@ -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.listener.DebugListener;
|
||||||
import cn.hamster3.mc.plugin.core.bukkit.page.handler.PageHandler;
|
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.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.bukkit.util.MinecraftVersion;
|
||||||
import cn.hamster3.mc.plugin.core.common.api.CoreAPI;
|
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.ConfigSection;
|
||||||
import cn.hamster3.mc.plugin.core.common.config.YamlConfig;
|
import cn.hamster3.mc.plugin.core.common.config.YamlConfig;
|
||||||
import cn.hamster3.mc.plugin.core.common.util.UpdateCheckUtils;
|
import cn.hamster3.mc.plugin.core.common.util.UpdateCheckUtils;
|
||||||
|
import com.zaxxer.hikari.HikariDataSource;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
|
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
@@ -34,12 +36,13 @@ import java.nio.charset.StandardCharsets;
|
|||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.StandardCopyOption;
|
import java.nio.file.StandardCopyOption;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
|
||||||
|
|
||||||
public class HamsterCorePlugin extends JavaPlugin {
|
public class HamsterCorePlugin extends JavaPlugin {
|
||||||
@Getter
|
@Getter
|
||||||
private static HamsterCorePlugin instance;
|
private static HamsterCorePlugin instance;
|
||||||
@Getter
|
@Getter
|
||||||
|
private static BukkitSimpleLogger simpleLogger;
|
||||||
|
@Getter
|
||||||
private BukkitAudiences audienceProvider;
|
private BukkitAudiences audienceProvider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -67,15 +70,15 @@ public class HamsterCorePlugin extends JavaPlugin {
|
|||||||
@Override
|
@Override
|
||||||
public void onLoad() {
|
public void onLoad() {
|
||||||
instance = this;
|
instance = this;
|
||||||
|
simpleLogger = new BukkitSimpleLogger(getInstance());
|
||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
Logger logger = getLogger();
|
simpleLogger.info("仓鼠核心正在初始化");
|
||||||
logger.info("仓鼠核心正在初始化");
|
simpleLogger.info("Minecraft 版本: " + MinecraftVersion.getMCVersion());
|
||||||
logger.info("Minecraft 版本: " + MinecraftVersion.getMCVersion());
|
simpleLogger.info("NMS 版本: " + MinecraftVersion.getNMSVersion());
|
||||||
logger.info("NMS 版本: " + MinecraftVersion.getNMSVersion());
|
|
||||||
try {
|
try {
|
||||||
File dataFolder = getDataFolder();
|
File dataFolder = getDataFolder();
|
||||||
if (dataFolder.mkdir()) {
|
if (dataFolder.mkdir()) {
|
||||||
logger.info("已生成插件存档文件夹");
|
simpleLogger.info("已生成插件存档文件夹");
|
||||||
}
|
}
|
||||||
File configFile = new File(dataFolder, "config.yml");
|
File configFile = new File(dataFolder, "config.yml");
|
||||||
if (!configFile.exists()) {
|
if (!configFile.exists()) {
|
||||||
@@ -86,53 +89,55 @@ public class HamsterCorePlugin extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
CoreBukkitAPI.init(configFile);
|
CoreBukkitAPI.init(configFile);
|
||||||
logger.info("已初始化 CoreAPI");
|
simpleLogger.info("已初始化 CoreAPI");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.log(Level.WARNING, "初始化 CoreAPI 出错", e);
|
simpleLogger.log(Level.WARNING, "初始化 CoreAPI 出错", e);
|
||||||
}
|
}
|
||||||
CoreMessage.init(this);
|
CoreMessage.init(this);
|
||||||
logger.info("已初始化语言文本");
|
simpleLogger.info("已初始化语言文本");
|
||||||
long time = System.currentTimeMillis() - start;
|
long time = System.currentTimeMillis() - start;
|
||||||
logger.info("仓鼠核心初始化完成,总计耗时 " + time + " ms");
|
simpleLogger.info("仓鼠核心初始化完成,总计耗时 " + time + " ms");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
Logger logger = getLogger();
|
simpleLogger.info("仓鼠核心正在启动");
|
||||||
logger.info("仓鼠核心正在启动");
|
|
||||||
audienceProvider = BukkitAudiences.create(this);
|
audienceProvider = BukkitAudiences.create(this);
|
||||||
logger.info("已创建 AudienceProvider");
|
simpleLogger.info("已创建 AudienceProvider");
|
||||||
CoreCommand.INSTANCE.register();
|
CoreCommand.INSTANCE.register();
|
||||||
LoreCommand.INSTANCE.register();
|
LoreCommand.INSTANCE.register();
|
||||||
NBTCommand.INSTANCE.register();
|
NBTCommand.INSTANCE.register();
|
||||||
Bukkit.getPluginManager().registerEvents(PageListener.INSTANCE, this);
|
Bukkit.getPluginManager().registerEvents(PageListener.INSTANCE, this);
|
||||||
logger.info("已注册 PageListener");
|
simpleLogger.info("已注册 PageListener");
|
||||||
Bukkit.getPluginManager().registerEvents(CallbackListener.INSTANCE, this);
|
Bukkit.getPluginManager().registerEvents(CallbackListener.INSTANCE, this);
|
||||||
logger.info("已注册 CallbackListener");
|
simpleLogger.info("已注册 CallbackListener");
|
||||||
Bukkit.getPluginManager().registerEvents(DebugListener.INSTANCE, this);
|
Bukkit.getPluginManager().registerEvents(DebugListener.INSTANCE, this);
|
||||||
logger.info("已注册 DebugListener");
|
simpleLogger.info("已注册 DebugListener");
|
||||||
long time = System.currentTimeMillis() - start;
|
long time = System.currentTimeMillis() - start;
|
||||||
sync(() -> {
|
sync(() -> {
|
||||||
PointAPI.reloadPlayerPointAPIHook();
|
PointAPI.reloadPlayerPointAPIHook();
|
||||||
VaultAPI.reloadVaultHook();
|
VaultAPI.reloadVaultHook();
|
||||||
async(this::checkUpdate);
|
async(this::checkUpdate);
|
||||||
});
|
});
|
||||||
logger.info("仓鼠核心启动完成,总计耗时 " + time + " ms");
|
simpleLogger.info("仓鼠核心启动完成,总计耗时 " + time + " ms");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
Logger logger = getLogger();
|
if (CoreAPI.getInstance().isEnableRedis()) {
|
||||||
CoreAPI.getInstance().getJedisPool().close();
|
CoreAPI.getInstance().getJedisPool().close();
|
||||||
logger.info("已关闭 Redis 连接池");
|
simpleLogger.info("已关闭 Redis 连接池");
|
||||||
CoreAPI.getInstance().getHikariDataSource().close();
|
}
|
||||||
logger.info("已关闭数据库连接池");
|
if (CoreAPI.getInstance().isEnableDatabase()) {
|
||||||
|
((HikariDataSource) CoreAPI.getInstance().getDataSource()).close();
|
||||||
|
simpleLogger.info("已关闭数据库连接池");
|
||||||
|
}
|
||||||
CoreAPI.getInstance().getExecutorService().shutdownNow();
|
CoreAPI.getInstance().getExecutorService().shutdownNow();
|
||||||
logger.info("已关闭 ExecutorService 线程池");
|
simpleLogger.info("已关闭 ExecutorService 线程池");
|
||||||
CoreAPI.getInstance().getScheduledService().shutdownNow();
|
CoreAPI.getInstance().getScheduledService().shutdownNow();
|
||||||
logger.info("已关闭 ScheduledExecutorService 线程池");
|
simpleLogger.info("已关闭 ScheduledExecutorService 线程池");
|
||||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||||
InventoryView view = player.getOpenInventory();
|
InventoryView view = player.getOpenInventory();
|
||||||
Inventory inventory = view.getTopInventory();
|
Inventory inventory = view.getTopInventory();
|
||||||
@@ -141,9 +146,9 @@ public class HamsterCorePlugin extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
player.closeInventory();
|
player.closeInventory();
|
||||||
}
|
}
|
||||||
logger.info("已关闭所有玩家的界面");
|
simpleLogger.info("已关闭所有玩家的界面");
|
||||||
long time = System.currentTimeMillis() - start;
|
long time = System.currentTimeMillis() - start;
|
||||||
logger.info("仓鼠核心已关闭,总计耗时 " + time + " ms");
|
simpleLogger.info("仓鼠核心已关闭,总计耗时 " + time + " ms");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkUpdate() {
|
private void checkUpdate() {
|
||||||
|
@@ -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.HamsterCorePlugin;
|
||||||
import cn.hamster3.mc.plugin.core.bukkit.impl.ItemStackAdapter;
|
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.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.bukkit.util.MinecraftVersion;
|
||||||
import cn.hamster3.mc.plugin.core.common.api.CoreAPI;
|
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.ConfigSection;
|
||||||
@@ -20,7 +21,6 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.logging.Logger;
|
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public final class CoreBukkitAPI extends CoreAPI {
|
public final class CoreBukkitAPI extends CoreAPI {
|
||||||
@@ -62,8 +62,8 @@ public final class CoreBukkitAPI extends CoreAPI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull Logger getLogger() {
|
public @NotNull BukkitSimpleLogger getLogger() {
|
||||||
return HamsterCorePlugin.getInstance().getLogger();
|
return HamsterCorePlugin.getSimpleLogger();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -78,13 +78,13 @@ public class YamlCommand extends ChildCommand {
|
|||||||
config.set("test-item", stack);
|
config.set("test-item", stack);
|
||||||
File dataFolder = new File(HamsterCorePlugin.getInstance().getDataFolder(), "yaml");
|
File dataFolder = new File(HamsterCorePlugin.getInstance().getDataFolder(), "yaml");
|
||||||
if (dataFolder.mkdirs()) {
|
if (dataFolder.mkdirs()) {
|
||||||
HamsterCorePlugin.getInstance().getLogger().info("创建 yaml 存档文件夹");
|
HamsterCorePlugin.getSimpleLogger().info("创建 yaml 存档文件夹");
|
||||||
}
|
}
|
||||||
File saveFile = new File(dataFolder, sender.getName() + "_" + System.currentTimeMillis() + ".yml");
|
File saveFile = new File(dataFolder, sender.getName() + "_" + System.currentTimeMillis() + ".yml");
|
||||||
try {
|
try {
|
||||||
config.save(saveFile);
|
config.save(saveFile);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
HamsterCorePlugin.getSimpleLogger().error(e);
|
||||||
}
|
}
|
||||||
sender.sendMessage("§a信息已保存至文件 " + saveFile.getAbsolutePath());
|
sender.sendMessage("§a信息已保存至文件 " + saveFile.getAbsolutePath());
|
||||||
return true;
|
return true;
|
||||||
|
@@ -20,7 +20,7 @@ public class EconomyAPI {
|
|||||||
* @return true代表安装了,false代表未安装
|
* @return true代表安装了,false代表未安装
|
||||||
*/
|
*/
|
||||||
public static boolean isSetupEconomy() {
|
public static boolean isSetupEconomy() {
|
||||||
return VaultAPI.isSetupVault() && VaultAPI.getEconomy() != null;
|
return VaultAPI.isVaultEnabled() && VaultAPI.getEconomy() != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package cn.hamster3.mc.plugin.core.bukkit.hook;
|
package cn.hamster3.mc.plugin.core.bukkit.hook;
|
||||||
|
|
||||||
import cn.hamster3.mc.plugin.core.bukkit.HamsterCorePlugin;
|
import cn.hamster3.mc.plugin.core.bukkit.HamsterCorePlugin;
|
||||||
|
import lombok.Getter;
|
||||||
import org.black_ixx.playerpoints.PlayerPoints;
|
import org.black_ixx.playerpoints.PlayerPoints;
|
||||||
import org.black_ixx.playerpoints.PlayerPointsAPI;
|
import org.black_ixx.playerpoints.PlayerPointsAPI;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
@@ -14,6 +15,7 @@ import java.util.UUID;
|
|||||||
*/
|
*/
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public class PointAPI {
|
public class PointAPI {
|
||||||
|
@Getter
|
||||||
private static PlayerPointsAPI playerPointsAPI;
|
private static PlayerPointsAPI playerPointsAPI;
|
||||||
|
|
||||||
private PointAPI() {
|
private PointAPI() {
|
||||||
@@ -25,20 +27,11 @@ public class PointAPI {
|
|||||||
public static void reloadPlayerPointAPIHook() {
|
public static void reloadPlayerPointAPIHook() {
|
||||||
Plugin plugin = Bukkit.getPluginManager().getPlugin("PlayerPoints");
|
Plugin plugin = Bukkit.getPluginManager().getPlugin("PlayerPoints");
|
||||||
if (plugin == null) {
|
if (plugin == null) {
|
||||||
HamsterCorePlugin.getInstance().getLogger().warning("未检测到 PlayerPointAPI 插件");
|
HamsterCorePlugin.getSimpleLogger().warn("未检测到 PlayerPointAPI 插件");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
playerPointsAPI = ((PlayerPoints) plugin).getAPI();
|
playerPointsAPI = ((PlayerPoints) plugin).getAPI();
|
||||||
HamsterCorePlugin.getInstance().getLogger().info("PlayerPointAPI 挂接成功");
|
HamsterCorePlugin.getSimpleLogger().info("PlayerPointAPI 挂接成功");
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取 PlayerPointsAPI 实例
|
|
||||||
*
|
|
||||||
* @return PlayerPointsAPI 实例
|
|
||||||
*/
|
|
||||||
public static PlayerPointsAPI getPlayerPointsAPI() {
|
|
||||||
return playerPointsAPI;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1,22 +1,27 @@
|
|||||||
package cn.hamster3.mc.plugin.core.bukkit.hook;
|
package cn.hamster3.mc.plugin.core.bukkit.hook;
|
||||||
|
|
||||||
import cn.hamster3.mc.plugin.core.bukkit.HamsterCorePlugin;
|
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.chat.Chat;
|
||||||
import net.milkbowl.vault.economy.Economy;
|
import net.milkbowl.vault.economy.Economy;
|
||||||
import net.milkbowl.vault.permission.Permission;
|
import net.milkbowl.vault.permission.Permission;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.plugin.RegisteredServiceProvider;
|
import org.bukkit.plugin.RegisteredServiceProvider;
|
||||||
|
|
||||||
import java.util.logging.Logger;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Vault API
|
* Vault API
|
||||||
*/
|
*/
|
||||||
|
@Getter
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public class VaultAPI {
|
public class VaultAPI {
|
||||||
|
@Getter
|
||||||
private static boolean vaultEnabled;
|
private static boolean vaultEnabled;
|
||||||
|
@Getter
|
||||||
private static Chat chat;
|
private static Chat chat;
|
||||||
|
@Getter
|
||||||
private static Economy economy;
|
private static Economy economy;
|
||||||
|
@Getter
|
||||||
private static Permission permission;
|
private static Permission permission;
|
||||||
|
|
||||||
private VaultAPI() {
|
private VaultAPI() {
|
||||||
@@ -27,9 +32,9 @@ public class VaultAPI {
|
|||||||
economy = null;
|
economy = null;
|
||||||
permission = null;
|
permission = null;
|
||||||
vaultEnabled = Bukkit.getPluginManager().isPluginEnabled("Vault");
|
vaultEnabled = Bukkit.getPluginManager().isPluginEnabled("Vault");
|
||||||
Logger logger = HamsterCorePlugin.getInstance().getLogger();
|
BukkitSimpleLogger logger = HamsterCorePlugin.getSimpleLogger();
|
||||||
if (!vaultEnabled) {
|
if (!vaultEnabled) {
|
||||||
logger.warning("未检测到 Vault 插件");
|
logger.warn("未检测到 Vault 插件");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
logger.info("已连接 Vault");
|
logger.info("已连接 Vault");
|
||||||
@@ -40,7 +45,7 @@ public class VaultAPI {
|
|||||||
chat = chatProvider.getProvider();
|
chat = chatProvider.getProvider();
|
||||||
logger.info("聊天系统挂接成功");
|
logger.info("聊天系统挂接成功");
|
||||||
} else {
|
} else {
|
||||||
logger.warning("未检测到聊天系统");
|
logger.warn("未检测到聊天系统");
|
||||||
}
|
}
|
||||||
|
|
||||||
RegisteredServiceProvider<Economy> economyProvider = Bukkit.getServer().getServicesManager().getRegistration(Economy.class);
|
RegisteredServiceProvider<Economy> economyProvider = Bukkit.getServer().getServicesManager().getRegistration(Economy.class);
|
||||||
@@ -48,7 +53,7 @@ public class VaultAPI {
|
|||||||
economy = economyProvider.getProvider();
|
economy = economyProvider.getProvider();
|
||||||
logger.info("经济系统挂接成功");
|
logger.info("经济系统挂接成功");
|
||||||
} else {
|
} else {
|
||||||
logger.warning("未检测到经济系统");
|
logger.warn("未检测到经济系统");
|
||||||
}
|
}
|
||||||
|
|
||||||
RegisteredServiceProvider<Permission> permissionProvider = Bukkit.getServer().getServicesManager().getRegistration(Permission.class);
|
RegisteredServiceProvider<Permission> permissionProvider = Bukkit.getServer().getServicesManager().getRegistration(Permission.class);
|
||||||
@@ -56,45 +61,9 @@ public class VaultAPI {
|
|||||||
permission = permissionProvider.getProvider();
|
permission = permissionProvider.getProvider();
|
||||||
logger.info("权限系统挂接成功");
|
logger.info("权限系统挂接成功");
|
||||||
} else {
|
} else {
|
||||||
logger.warning("未检测到权限插件");
|
logger.warn("未检测到权限插件");
|
||||||
}
|
}
|
||||||
logger.info("已完成 VaultAPI 挂载");
|
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
@@ -98,8 +98,7 @@ public class PageConfig implements InventoryHolder {
|
|||||||
try {
|
try {
|
||||||
buttonSounds.put(key, Sound.valueOf(soundName));
|
buttonSounds.put(key, Sound.valueOf(soundName));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
HamsterCorePlugin.getInstance().getLogger().warning("初始化 PageConfig 时遇到了一个异常:");
|
HamsterCorePlugin.getSimpleLogger().error(e, "初始化 PageConfig 时遇到了一个异常: ");
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -39,8 +39,7 @@ public class PageListener implements Listener {
|
|||||||
try {
|
try {
|
||||||
pageHandler.onClick(event);
|
pageHandler.onClick(event);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
HamsterCorePlugin.getInstance().getLogger().warning(String.format("执行 %s 的 onClick(event) 时遇到了一个异常: ", pageHandler.getClass().getName()));
|
HamsterCorePlugin.getSimpleLogger().warn(e, "执行 %s 的 onClick(event) 时遇到了一个异常: ", pageHandler.getClass().getName());
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
if (event.isCancelled()) {
|
if (event.isCancelled()) {
|
||||||
return;
|
return;
|
||||||
@@ -55,31 +54,29 @@ public class PageListener implements Listener {
|
|||||||
try {
|
try {
|
||||||
pageHandler.onClickInside(event);
|
pageHandler.onClickInside(event);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
HamsterCorePlugin.getInstance().getLogger().warning(String.format("执行 %s 的 onClickInside(event) 时遇到了一个异常: ", pageHandler.getClass().getName()));
|
HamsterCorePlugin.getSimpleLogger().warn(e, "执行 %s 的 onClickInside(event) 时遇到了一个异常: ", pageHandler.getClass().getName());
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
pageHandler.onClickInside(event.getClick(), event.getAction(), index);
|
pageHandler.onClickInside(event.getClick(), event.getAction(), index);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
HamsterCorePlugin.getInstance().getLogger().warning(String.format(
|
HamsterCorePlugin.getSimpleLogger().warn(e,
|
||||||
"执行 %s 的 onClickInside(%s, %s, %d) 时遇到了一个异常: ",
|
"执行 %s 的 onClickInside(%s, %s, %d) 时遇到了一个异常: ",
|
||||||
pageHandler.getClass().getName(),
|
pageHandler.getClass().getName(),
|
||||||
event.getClick().name(),
|
event.getClick().name(),
|
||||||
event.getAction().name(),
|
event.getAction().name(),
|
||||||
index
|
index
|
||||||
));
|
);
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
pageHandler.onPlayButtonSound(event.getClick(), event.getAction(), index);
|
pageHandler.onPlayButtonSound(event.getClick(), event.getAction(), index);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
HamsterCorePlugin.getInstance().getLogger().warning(String.format(
|
HamsterCorePlugin.getSimpleLogger().warn(e,
|
||||||
"执行 %s 的 onPlayButtonSound(%s, %s, %d) 时遇到了一个异常: ",
|
"执行 %s 的 onPlayButtonSound(%s, %s, %d) 时遇到了一个异常: ",
|
||||||
pageHandler.getClass().getName(),
|
pageHandler.getClass().getName(),
|
||||||
event.getClick().name(),
|
event.getClick().name(),
|
||||||
event.getAction().name(),
|
event.getAction().name(),
|
||||||
index
|
index
|
||||||
));
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,8 +90,7 @@ public class PageListener implements Listener {
|
|||||||
try {
|
try {
|
||||||
pageHandler.onDrag(event);
|
pageHandler.onDrag(event);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
HamsterCorePlugin.getInstance().getLogger().warning(String.format("执行 %s 的 onDrag(event) 时遇到了一个异常: ", pageHandler.getClass().getName()));
|
HamsterCorePlugin.getSimpleLogger().warn(e, "执行 %s 的 onDrag(event) 时遇到了一个异常: ", pageHandler.getClass().getName());
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
if (event.isCancelled()) {
|
if (event.isCancelled()) {
|
||||||
return;
|
return;
|
||||||
|
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
@@ -1,3 +1,6 @@
|
|||||||
|
# 是否启用 redis 连接池功能
|
||||||
|
enable-redis: false
|
||||||
|
|
||||||
# redis 连接配置
|
# redis 连接配置
|
||||||
# 完整格式如下:
|
# 完整格式如下:
|
||||||
# redis://用户名:密码@主机名:端口/数据库索引?参数名=参数值&参数名=参数值
|
# redis://用户名:密码@主机名:端口/数据库索引?参数名=参数值&参数名=参数值
|
||||||
@@ -8,6 +11,10 @@
|
|||||||
# 若不设置数据库,则默认使用 0
|
# 若不设置数据库,则默认使用 0
|
||||||
redis-url: "redis://localhost:6379/0?clientName=HamsterCore&timeout=5s"
|
redis-url: "redis://localhost:6379/0?clientName=HamsterCore&timeout=5s"
|
||||||
|
|
||||||
|
# 是否启用数据库连接池功能
|
||||||
|
enable-database: false
|
||||||
|
|
||||||
|
# 数据库连接池配置
|
||||||
datasource:
|
datasource:
|
||||||
# 数据库链接驱动地址,旧版服务端(低于1.13)请使用:com.mysql.jdbc.Driver
|
# 数据库链接驱动地址,旧版服务端(低于1.13)请使用:com.mysql.jdbc.Driver
|
||||||
driver: "com.mysql.cj.jdbc.Driver"
|
driver: "com.mysql.cj.jdbc.Driver"
|
||||||
|
@@ -1,10 +1,12 @@
|
|||||||
package cn.hamster3.mc.plugin.core.bungee;
|
package cn.hamster3.mc.plugin.core.bungee;
|
||||||
|
|
||||||
import cn.hamster3.mc.plugin.core.bungee.api.CoreBungeeAPI;
|
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.api.CoreAPI;
|
||||||
import cn.hamster3.mc.plugin.core.common.config.ConfigSection;
|
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.config.YamlConfig;
|
||||||
import cn.hamster3.mc.plugin.core.common.util.UpdateCheckUtils;
|
import cn.hamster3.mc.plugin.core.common.util.UpdateCheckUtils;
|
||||||
|
import com.zaxxer.hikari.HikariDataSource;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.kyori.adventure.platform.bungeecord.BungeeAudiences;
|
import net.kyori.adventure.platform.bungeecord.BungeeAudiences;
|
||||||
import net.md_5.bungee.api.ProxyServer;
|
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.Files;
|
||||||
import java.nio.file.StandardCopyOption;
|
import java.nio.file.StandardCopyOption;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
|
||||||
|
|
||||||
public class HamsterCorePlugin extends Plugin {
|
public class HamsterCorePlugin extends Plugin {
|
||||||
@Getter
|
@Getter
|
||||||
private static HamsterCorePlugin instance;
|
private static HamsterCorePlugin instance;
|
||||||
@Getter
|
@Getter
|
||||||
|
private static BungeeSimpleLogger simpleLogger;
|
||||||
|
@Getter
|
||||||
private BungeeAudiences audienceProvider;
|
private BungeeAudiences audienceProvider;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoad() {
|
public void onLoad() {
|
||||||
instance = this;
|
instance = this;
|
||||||
|
simpleLogger = new BungeeSimpleLogger(this);
|
||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
Logger logger = getLogger();
|
simpleLogger.info("仓鼠核心正在初始化");
|
||||||
logger.info("仓鼠核心正在初始化");
|
|
||||||
try {
|
try {
|
||||||
File dataFolder = getDataFolder();
|
File dataFolder = getDataFolder();
|
||||||
if (dataFolder.mkdir()) {
|
if (dataFolder.mkdir()) {
|
||||||
logger.info("已生成插件存档文件夹");
|
simpleLogger.info("已生成插件存档文件夹");
|
||||||
}
|
}
|
||||||
File configFile = new File(dataFolder, "config.yml");
|
File configFile = new File(dataFolder, "config.yml");
|
||||||
if (!configFile.exists()) {
|
if (!configFile.exists()) {
|
||||||
@@ -46,40 +49,42 @@ public class HamsterCorePlugin extends Plugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
CoreBungeeAPI.init(configFile);
|
CoreBungeeAPI.init(configFile);
|
||||||
logger.info("已初始化 CoreAPI");
|
simpleLogger.info("已初始化 CoreAPI");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.log(Level.WARNING, "初始化 CoreAPI 出错", e);
|
simpleLogger.log(Level.WARNING, "初始化 CoreAPI 出错", e);
|
||||||
}
|
}
|
||||||
long time = System.currentTimeMillis() - start;
|
long time = System.currentTimeMillis() - start;
|
||||||
logger.info("仓鼠核心初始化完成,总计耗时 " + time + " ms");
|
simpleLogger.info("仓鼠核心初始化完成,总计耗时 " + time + " ms");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
Logger logger = getLogger();
|
simpleLogger.info("仓鼠核心正在启动");
|
||||||
logger.info("仓鼠核心正在启动");
|
|
||||||
audienceProvider = BungeeAudiences.create(this);
|
audienceProvider = BungeeAudiences.create(this);
|
||||||
logger.info("已创建 AudienceProvider");
|
simpleLogger.info("已创建 AudienceProvider");
|
||||||
CoreAPI.getInstance().getExecutorService().submit(this::checkUpdate);
|
CoreAPI.getInstance().getExecutorService().submit(this::checkUpdate);
|
||||||
long time = System.currentTimeMillis() - start;
|
long time = System.currentTimeMillis() - start;
|
||||||
logger.info("仓鼠核心启动完成,总计耗时 " + time + " ms");
|
simpleLogger.info("仓鼠核心启动完成,总计耗时 " + time + " ms");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
Logger logger = getLogger();
|
if (CoreAPI.getInstance().isEnableRedis()) {
|
||||||
CoreAPI.getInstance().getJedisPool().close();
|
CoreAPI.getInstance().getJedisPool().close();
|
||||||
logger.info("已关闭 Redis 连接池");
|
simpleLogger.info("已关闭 Redis 连接池");
|
||||||
CoreAPI.getInstance().getHikariDataSource().close();
|
}
|
||||||
logger.info("已关闭数据库连接池");
|
if (CoreAPI.getInstance().isEnableDatabase()) {
|
||||||
|
((HikariDataSource) CoreAPI.getInstance().getDataSource()).close();
|
||||||
|
simpleLogger.info("已关闭数据库连接池");
|
||||||
|
}
|
||||||
CoreAPI.getInstance().getExecutorService().shutdownNow();
|
CoreAPI.getInstance().getExecutorService().shutdownNow();
|
||||||
logger.info("已关闭 ExecutorService 线程池");
|
simpleLogger.info("已关闭 ExecutorService 线程池");
|
||||||
CoreAPI.getInstance().getScheduledService().shutdownNow();
|
CoreAPI.getInstance().getScheduledService().shutdownNow();
|
||||||
logger.info("已关闭 ScheduledExecutorService 线程池");
|
simpleLogger.info("已关闭 ScheduledExecutorService 线程池");
|
||||||
long time = System.currentTimeMillis() - start;
|
long time = System.currentTimeMillis() - start;
|
||||||
logger.info("仓鼠核心已关闭,总计耗时 " + time + " ms");
|
simpleLogger.info("仓鼠核心已关闭,总计耗时 " + time + " ms");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkUpdate() {
|
private void checkUpdate() {
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package cn.hamster3.mc.plugin.core.bungee.api;
|
package cn.hamster3.mc.plugin.core.bungee.api;
|
||||||
|
|
||||||
import cn.hamster3.mc.plugin.core.bungee.HamsterCorePlugin;
|
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.api.CoreAPI;
|
||||||
import cn.hamster3.mc.plugin.core.common.config.ConfigSection;
|
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.config.YamlConfig;
|
||||||
@@ -15,7 +16,6 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.logging.Logger;
|
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public final class CoreBungeeAPI extends CoreAPI {
|
public final class CoreBungeeAPI extends CoreAPI {
|
||||||
@@ -51,8 +51,8 @@ public final class CoreBungeeAPI extends CoreAPI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull Logger getLogger() {
|
public @NotNull BungeeSimpleLogger getLogger() {
|
||||||
return HamsterCorePlugin.getInstance().getLogger();
|
return HamsterCorePlugin.getSimpleLogger();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
@@ -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.config.ConfigSection;
|
||||||
import cn.hamster3.mc.plugin.core.common.thread.NamedThreadFactory;
|
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.CoreUtils;
|
||||||
|
import cn.hamster3.mc.plugin.core.common.util.SimpleLogger;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.zaxxer.hikari.HikariDataSource;
|
import com.zaxxer.hikari.HikariDataSource;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.kyori.adventure.platform.AudienceProvider;
|
import net.kyori.adventure.platform.AudienceProvider;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
import redis.clients.jedis.JedisPool;
|
import redis.clients.jedis.JedisPool;
|
||||||
|
|
||||||
import javax.sql.DataSource;
|
import javax.sql.DataSource;
|
||||||
@@ -16,50 +18,62 @@ import java.sql.SQLException;
|
|||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
import java.util.logging.Logger;
|
|
||||||
|
|
||||||
|
@Getter
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public abstract class CoreAPI {
|
public abstract class CoreAPI {
|
||||||
@Getter
|
@Getter
|
||||||
protected static CoreAPI instance;
|
protected static CoreAPI instance;
|
||||||
/**
|
private final boolean enableRedis;
|
||||||
* Redis 连接池
|
private final boolean enableDatabase;
|
||||||
*/
|
|
||||||
@Getter
|
|
||||||
@NotNull
|
|
||||||
private final JedisPool jedisPool;
|
|
||||||
/**
|
|
||||||
* 公用数据库连接池
|
|
||||||
*/
|
|
||||||
@Getter
|
|
||||||
@NotNull
|
|
||||||
private final HikariDataSource hikariDataSource;
|
|
||||||
/**
|
/**
|
||||||
* 异步线程池
|
* 异步线程池
|
||||||
*/
|
*/
|
||||||
@Getter
|
@NotNull
|
||||||
private final ExecutorService executorService;
|
private final ExecutorService executorService;
|
||||||
/**
|
/**
|
||||||
* 调度器线程池
|
* 调度器线程池
|
||||||
*/
|
*/
|
||||||
@Getter
|
@NotNull
|
||||||
private final ScheduledExecutorService scheduledService;
|
private final ScheduledExecutorService scheduledService;
|
||||||
|
/**
|
||||||
|
* 公用 Redis 连接池
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
|
private JedisPool jedisPool;
|
||||||
|
/**
|
||||||
|
* 公用数据库连接池
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
|
private HikariDataSource hikariDataSource;
|
||||||
|
|
||||||
public CoreAPI(@NotNull ConfigSection config) {
|
public CoreAPI(@NotNull ConfigSection config) {
|
||||||
|
SimpleLogger logger = getLogger();
|
||||||
executorService = Executors.newCachedThreadPool(new NamedThreadFactory("HamsterCore - Executor"));
|
executorService = Executors.newCachedThreadPool(new NamedThreadFactory("HamsterCore - Executor"));
|
||||||
scheduledService = Executors.newScheduledThreadPool(1, new NamedThreadFactory("HamsterCore - Scheduler"));
|
scheduledService = Executors.newScheduledThreadPool(1, new NamedThreadFactory("HamsterCore - Scheduler"));
|
||||||
|
logger.info("已创建线程池");
|
||||||
|
|
||||||
getLogger().info("正在创建 Redis 连接池");
|
enableRedis = config.getBoolean("enable-redis", true);
|
||||||
|
if (enableRedis) {
|
||||||
|
logger.info("正在创建 Redis 连接池");
|
||||||
jedisPool = new JedisPool(config.getString("redis-url"));
|
jedisPool = new JedisPool(config.getString("redis-url"));
|
||||||
getLogger().info("Redis 连接池创建完成");
|
logger.info("Redis 连接池创建完成");
|
||||||
|
} else {
|
||||||
|
logger.info("未启用 Redis 功能");
|
||||||
|
}
|
||||||
|
|
||||||
|
enableDatabase = config.getBoolean("enable-database", true);
|
||||||
|
if (enableDatabase) {
|
||||||
ConfigSection datasourceConfig = config.getSection("datasource");
|
ConfigSection datasourceConfig = config.getSection("datasource");
|
||||||
if (datasourceConfig == null) {
|
if (datasourceConfig == null) {
|
||||||
throw new IllegalArgumentException("配置文件中未找到 datasource 节点");
|
throw new IllegalArgumentException("配置文件中未找到 datasource 节点");
|
||||||
}
|
}
|
||||||
getLogger().info("正在创建数据库连接池");
|
logger.info("正在创建数据库连接池");
|
||||||
hikariDataSource = (HikariDataSource) CoreUtils.getDataSource(datasourceConfig);
|
hikariDataSource = (HikariDataSource) CoreUtils.getDataSource(datasourceConfig);
|
||||||
getLogger().info("数据库连接池创建完成");
|
logger.info("数据库连接池创建完成");
|
||||||
|
} else {
|
||||||
|
logger.info("未启用数据库功能");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -69,8 +83,11 @@ public abstract class CoreAPI {
|
|||||||
*/
|
*/
|
||||||
@NotNull
|
@NotNull
|
||||||
public DataSource getDataSource() {
|
public DataSource getDataSource() {
|
||||||
|
if (hikariDataSource != null) {
|
||||||
return hikariDataSource;
|
return hikariDataSource;
|
||||||
}
|
}
|
||||||
|
throw new IllegalStateException("仓鼠核心未启用数据库功能");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取公用数据库连接
|
* 获取公用数据库连接
|
||||||
@@ -84,7 +101,15 @@ public abstract class CoreAPI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public abstract Logger getLogger();
|
public JedisPool getJedisPool() {
|
||||||
|
if (jedisPool != null) {
|
||||||
|
return jedisPool;
|
||||||
|
}
|
||||||
|
throw new IllegalStateException("仓鼠核心未启用 Redis 功能");
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public abstract SimpleLogger getLogger();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return GSON 工具
|
* @return GSON 工具
|
||||||
|
@@ -1,52 +1,38 @@
|
|||||||
package cn.hamster3.mc.plugin.core.bukkit.util;
|
package cn.hamster3.mc.plugin.core.common.util;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import org.bukkit.plugin.Plugin;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public class BukkitPluginLogger {
|
public abstract class SimpleLogger {
|
||||||
@NotNull
|
public abstract void log(@NotNull Level level, @NotNull String msg);
|
||||||
private final Plugin plugin;
|
|
||||||
@NotNull
|
|
||||||
private final Logger logger;
|
|
||||||
|
|
||||||
public BukkitPluginLogger(@NotNull Plugin plugin) {
|
public abstract void log(@NotNull Level level, @NotNull Throwable throwable);
|
||||||
this.plugin = plugin;
|
|
||||||
logger = plugin.getLogger();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void log(@NotNull Level level, @NotNull String msg) {
|
public abstract void log(@NotNull Level level, @NotNull Throwable throwable, @NotNull String msg);
|
||||||
logger.log(level, msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void log(@NotNull Level level, @NotNull String msg, @NotNull Object... args) {
|
public void log(@NotNull Level level, @NotNull String msg, @NotNull Object... args) {
|
||||||
try {
|
try {
|
||||||
logger.log(level, String.format(msg, args));
|
log(level, String.format(msg, args));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.log(Level.WARNING, "输出日志 " + msg + " 时遇到一个异常");
|
log(Level.WARNING, "输出日志 " + msg + " 时遇到一个异常");
|
||||||
logger.log(Level.WARNING, "日志参数: " + Arrays.toString(args));
|
log(Level.WARNING, "日志参数: " + Arrays.toString(args));
|
||||||
logger.log(Level.WARNING, "异常信息: ", e);
|
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) {
|
public void log(@NotNull Level level, @NotNull Throwable throwable, @NotNull String msg, @NotNull Object... args) {
|
||||||
try {
|
try {
|
||||||
logger.log(level, String.format(msg, args), throwable);
|
log(level, String.format(msg, args), throwable);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.log(Level.WARNING, "输出日志 " + msg + " 时遇到一个异常");
|
log(Level.WARNING, "输出日志 " + msg + " 时遇到一个异常");
|
||||||
logger.log(Level.WARNING, "日志参数: " + Arrays.toString(args));
|
log(Level.WARNING, "日志参数: " + Arrays.toString(args));
|
||||||
logger.log(Level.WARNING, "异常参数: ", throwable);
|
log(Level.WARNING, "异常参数: ", throwable);
|
||||||
logger.log(Level.WARNING, "异常信息: ", e);
|
log(Level.WARNING, "异常信息: ", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,6 +44,10 @@ public class BukkitPluginLogger {
|
|||||||
log(Level.INFO, msg, args);
|
log(Level.INFO, msg, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void info(@NotNull Throwable throwable) {
|
||||||
|
log(Level.INFO, throwable);
|
||||||
|
}
|
||||||
|
|
||||||
public void info(@NotNull Throwable throwable, @NotNull String msg) {
|
public void info(@NotNull Throwable throwable, @NotNull String msg) {
|
||||||
log(Level.INFO, throwable, msg);
|
log(Level.INFO, throwable, msg);
|
||||||
}
|
}
|
||||||
@@ -74,6 +64,10 @@ public class BukkitPluginLogger {
|
|||||||
log(Level.WARNING, msg, args);
|
log(Level.WARNING, msg, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void warn(@NotNull Throwable throwable) {
|
||||||
|
log(Level.WARNING, throwable);
|
||||||
|
}
|
||||||
|
|
||||||
public void warn(@NotNull Throwable throwable, @NotNull String msg) {
|
public void warn(@NotNull Throwable throwable, @NotNull String msg) {
|
||||||
log(Level.WARNING, throwable, msg);
|
log(Level.WARNING, throwable, msg);
|
||||||
}
|
}
|
||||||
@@ -90,6 +84,10 @@ public class BukkitPluginLogger {
|
|||||||
log(Level.SEVERE, msg, args);
|
log(Level.SEVERE, msg, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void error(@NotNull Throwable throwable) {
|
||||||
|
log(Level.SEVERE, throwable);
|
||||||
|
}
|
||||||
|
|
||||||
public void error(@NotNull Throwable throwable, @NotNull String msg) {
|
public void error(@NotNull Throwable throwable, @NotNull String msg) {
|
||||||
log(Level.SEVERE, throwable, msg);
|
log(Level.SEVERE, throwable, msg);
|
||||||
}
|
}
|
@@ -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.config.YamlConfig;
|
||||||
import cn.hamster3.mc.plugin.core.common.util.UpdateCheckUtils;
|
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.api.CoreVelocityAPI;
|
||||||
|
import cn.hamster3.mc.plugin.core.velocity.util.VelocitySimpleLogger;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.velocitypowered.api.event.PostOrder;
|
import com.velocitypowered.api.event.PostOrder;
|
||||||
import com.velocitypowered.api.event.Subscribe;
|
import com.velocitypowered.api.event.Subscribe;
|
||||||
@@ -36,25 +37,22 @@ public class HamsterCorePlugin {
|
|||||||
@Getter
|
@Getter
|
||||||
private static HamsterCorePlugin instance;
|
private static HamsterCorePlugin instance;
|
||||||
@Getter
|
@Getter
|
||||||
private final java.util.logging.Logger logger;
|
private final VelocitySimpleLogger simpleLogger;
|
||||||
@Getter
|
|
||||||
private final Logger slf4jLogger;
|
|
||||||
@Getter
|
@Getter
|
||||||
private final ProxyServer proxyServer;
|
private final ProxyServer proxyServer;
|
||||||
@Getter
|
@Getter
|
||||||
private final File dataFolder;
|
private final File dataFolder;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public HamsterCorePlugin(Logger slf4jLogger, ProxyServer proxyServer, @DataDirectory Path dataPath) {
|
public HamsterCorePlugin(Logger logger, ProxyServer proxyServer, @DataDirectory Path dataPath) {
|
||||||
logger = java.util.logging.Logger.getLogger("hamster-core");
|
this.simpleLogger = new VelocitySimpleLogger(logger);
|
||||||
this.slf4jLogger = slf4jLogger;
|
|
||||||
this.proxyServer = proxyServer;
|
this.proxyServer = proxyServer;
|
||||||
dataFolder = dataPath.toFile();
|
dataFolder = dataPath.toFile();
|
||||||
instance = this;
|
instance = this;
|
||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
try {
|
try {
|
||||||
if (dataFolder.mkdir()) {
|
if (dataFolder.mkdir()) {
|
||||||
slf4jLogger.info("已生成插件存档文件夹");
|
simpleLogger.info("已生成插件存档文件夹");
|
||||||
}
|
}
|
||||||
File configFile = new File(dataFolder, "config.yml");
|
File configFile = new File(dataFolder, "config.yml");
|
||||||
if (!configFile.exists()) {
|
if (!configFile.exists()) {
|
||||||
@@ -65,38 +63,40 @@ public class HamsterCorePlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
CoreVelocityAPI.init(configFile);
|
CoreVelocityAPI.init(configFile);
|
||||||
slf4jLogger.info("已初始化 CoreAPI");
|
simpleLogger.info("已初始化 CoreAPI");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
slf4jLogger.error("初始化 CoreAPI 出错", e);
|
simpleLogger.error("初始化 CoreAPI 出错", e);
|
||||||
}
|
}
|
||||||
long time = System.currentTimeMillis() - start;
|
long time = System.currentTimeMillis() - start;
|
||||||
slf4jLogger.info("仓鼠核心初始化完成,总计耗时 " + time + " ms");
|
simpleLogger.info("仓鼠核心初始化完成,总计耗时 " + time + " ms");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe(order = PostOrder.FIRST)
|
@Subscribe(order = PostOrder.FIRST)
|
||||||
public void onProxyInitialization(ProxyInitializeEvent event) {
|
public void onProxyInitialization(ProxyInitializeEvent event) {
|
||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
slf4jLogger.info("仓鼠核心正在启动");
|
simpleLogger.info("仓鼠核心正在启动");
|
||||||
CoreAPI.getInstance().getExecutorService().submit(this::checkUpdate);
|
CoreAPI.getInstance().getExecutorService().submit(this::checkUpdate);
|
||||||
long time = System.currentTimeMillis() - start;
|
long time = System.currentTimeMillis() - start;
|
||||||
slf4jLogger.info("仓鼠核心启动完成,总计耗时 " + time + " ms");
|
simpleLogger.info("仓鼠核心启动完成,总计耗时 " + time + " ms");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe(order = PostOrder.LAST)
|
@Subscribe(order = PostOrder.LAST)
|
||||||
public void onProxyShutdown(ProxyShutdownEvent event) {
|
public void onProxyShutdown(ProxyShutdownEvent event) {
|
||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
|
if (CoreAPI.getInstance().isEnableRedis()) {
|
||||||
CoreAPI.getInstance().getJedisPool().close();
|
CoreAPI.getInstance().getJedisPool().close();
|
||||||
slf4jLogger.info("已关闭 Redis 连接池");
|
simpleLogger.info("已关闭 Redis 连接池");
|
||||||
if (CoreAPI.getInstance().getDataSource() instanceof HikariDataSource dataSource) {
|
}
|
||||||
dataSource.close();
|
if (CoreAPI.getInstance().isEnableDatabase()) {
|
||||||
slf4jLogger.info("已关闭数据库连接池");
|
((HikariDataSource) CoreAPI.getInstance().getDataSource()).close();
|
||||||
|
simpleLogger.info("已关闭数据库连接池");
|
||||||
}
|
}
|
||||||
CoreAPI.getInstance().getExecutorService().shutdownNow();
|
CoreAPI.getInstance().getExecutorService().shutdownNow();
|
||||||
slf4jLogger.info("已关闭 ExecutorService 线程池");
|
simpleLogger.info("已关闭 ExecutorService 线程池");
|
||||||
CoreAPI.getInstance().getScheduledService().shutdownNow();
|
CoreAPI.getInstance().getScheduledService().shutdownNow();
|
||||||
slf4jLogger.info("已关闭 ScheduledExecutorService 线程池");
|
simpleLogger.info("已关闭 ScheduledExecutorService 线程池");
|
||||||
long time = System.currentTimeMillis() - start;
|
long time = System.currentTimeMillis() - start;
|
||||||
slf4jLogger.info("仓鼠核心关闭完成,总计耗时 " + time + " ms");
|
simpleLogger.info("仓鼠核心已关闭,总计耗时 " + time + " ms");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkUpdate() {
|
private void checkUpdate() {
|
||||||
|
@@ -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.common.impl.MessageTypeAdapter;
|
||||||
import cn.hamster3.mc.plugin.core.velocity.HamsterCorePlugin;
|
import cn.hamster3.mc.plugin.core.velocity.HamsterCorePlugin;
|
||||||
import cn.hamster3.mc.plugin.core.velocity.impl.AudienceProviderImpl;
|
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.Gson;
|
||||||
import com.google.gson.GsonBuilder;
|
import com.google.gson.GsonBuilder;
|
||||||
import net.kyori.adventure.platform.AudienceProvider;
|
import net.kyori.adventure.platform.AudienceProvider;
|
||||||
@@ -16,7 +17,6 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.logging.Logger;
|
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public final class CoreVelocityAPI extends CoreAPI {
|
public final class CoreVelocityAPI extends CoreAPI {
|
||||||
@@ -57,8 +57,8 @@ public final class CoreVelocityAPI extends CoreAPI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull Logger getLogger() {
|
public @NotNull VelocitySimpleLogger getLogger() {
|
||||||
return HamsterCorePlugin.getInstance().getLogger();
|
return HamsterCorePlugin.getInstance().getSimpleLogger();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user