feat: 优化日志

This commit is contained in:
2023-08-21 00:00:35 +08:00
parent 6aac1fafd6
commit 2a11117b8c
13 changed files with 86 additions and 26 deletions

View File

@@ -1,6 +1,6 @@
# [HamsterBall](https://gitee.com/MiniDay/hamster-ball)
仓鼠球:一个基于 Netty 的 Minecraft 服务端通用消息中间件原HamsterService
仓鼠球:一个基于 Redis 的 Minecraft 服务端通用消息中间件原HamsterService
该插件依赖于 [仓鼠核心](https://gitee.com/MiniDay/hamster-core)

View File

@@ -28,21 +28,33 @@ public class HamsterBallPlugin extends JavaPlugin {
@Override
public void onLoad() {
instance = this;
long start = System.currentTimeMillis();
Logger logger = getLogger();
logger.info("仓鼠球正在初始化...");
instance = this;
saveDefaultConfig();
reloadConfig();
logger.info("已读取配置文件.");
try {
BallBukkitAPI.init();
logger.info("BallBukkitAPI 已初始化.");
BallBukkitAPI.getInstance().enable();
logger.info("BallBukkitAPI 已启动.");
logger.info("已初始化 BallAPI.");
} catch (Exception e) {
e.printStackTrace();
}
long time = System.currentTimeMillis() - start;
logger.info("仓鼠球初始化完成,总计耗时 " + time + " ms.");
}
@Override
public void onEnable() {
long start = System.currentTimeMillis();
Logger logger = getLogger();
logger.info("仓鼠球正在启动...");
try {
BallBukkitAPI.getInstance().enable();
} catch (Exception e) {
e.printStackTrace();
}
if (!BallAPI.getInstance().isEnabled()) {
sync(() -> {
logger.info("由于 HamsterBall 未能成功连接, 服务器将立即关闭.");
@@ -57,21 +69,27 @@ public class HamsterBallPlugin extends JavaPlugin {
ServerOnlineEvent.ACTION,
new ServerOnlineEvent(BallAPI.getInstance().getLocalServerInfo())
);
logger.info("HamsterBall 已启动.");
sync(() -> {
if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) {
PlaceholderHook.INSTANCE.register();
logger.info("已挂载 PlaceholderAPI 变量!");
}
});
long time = System.currentTimeMillis() - start;
logger.info("仓鼠球启动完成,总计耗时 " + time + " ms.");
}
@Override
public void onDisable() {
long start = System.currentTimeMillis();
Logger logger = getLogger();
logger.info("仓鼠球正在关闭...");
try {
BallBukkitAPI.getInstance().disable();
} catch (Exception e) {
e.printStackTrace();
}
long time = System.currentTimeMillis() - start;
logger.info("仓鼠球已关闭,总计耗时 " + time + " ms.");
}
}

View File

@@ -65,7 +65,15 @@ public class BallBukkitAPI extends BallAPI {
)
);
DataSource datasource = BallBukkitUtils.getDataSource(config.getConfigurationSection("datasource"));
DataSource datasource;
if (config.contains("datasource")) {
plugin.getLogger().info("检测到配置文件中包含 datasource 节点,启用自定义数据库连接.");
datasource = BallBukkitUtils.getDataSource(config.getConfigurationSection("datasource"));
}else {
plugin.getLogger().info("未检测到配置文件中的 datasource 节点,复用 HamsterCore 数据库连接.");
datasource = CoreAPI.getInstance().getDataSource();
}
File redissionConfig = new File(plugin.getDataFolder(), "redission.yml");
if (!redissionConfig.exists()) {
Files.copy(

View File

@@ -5,7 +5,7 @@ api-version: 1.13
author: MiniDay
website: https://gitee.com/MiniDay/hamster-ball
description: 仓鼠球:一个基于 Netty 的 Minecraft 服务端通用消息中间件原HamsterService
description: 仓鼠球:一个基于 Redis 的 Minecraft 服务端通用消息中间件原HamsterService
load: STARTUP

View File

@@ -15,6 +15,8 @@ dependencies {
exclude(group = "org.yaml")
exclude(group = "org.slf4j")
}
// https://mvnrepository.com/artifact/io.netty/netty-resolver-dns
implementation("io.netty:netty-resolver-dns:4.1.96.Final")
}

View File

@@ -20,22 +20,31 @@ public class HamsterBallPlugin extends Plugin {
@Override
public void onLoad() {
instance = this;
long start = System.currentTimeMillis();
Logger logger = getLogger();
logger.info("仓鼠球正在初始化...");
instance = this;
try {
BallBungeeCordAPI.init();
logger.info("BallBungeeCordAPI 已初始化.");
BallBungeeCordAPI.getInstance().enable();
logger.info("BallBungeeCordAPI 已启动.");
logger.info("已初始化 BallAPI.");
} catch (Exception e) {
e.printStackTrace();
ProxyServer.getInstance().stop();
}
long time = System.currentTimeMillis() - start;
logger.info("仓鼠球初始化完成,总计耗时 " + time + " ms.");
}
@Override
public void onEnable() {
long start = System.currentTimeMillis();
Logger logger = getLogger();
logger.info("仓鼠球正在启动...");
try {
BallBungeeCordAPI.getInstance().enable();
} catch (Exception e) {
e.printStackTrace();
}
if (!BallAPI.getInstance().isEnabled()) {
ProxyServer.getInstance().stop("由于 HamsterBall 未能成功连接, 服务器将立即关闭.");
return;
@@ -47,7 +56,6 @@ public class HamsterBallPlugin extends Plugin {
ServerOnlineEvent.ACTION,
new ServerOnlineEvent(BallAPI.getInstance().getLocalServerInfo())
);
logger.info("HamsterBall 已启动.");
BallAPI.getInstance().getAllPlayerInfo().values()
.stream()
.filter(BallPlayerInfo::isOnline)
@@ -56,14 +64,22 @@ public class HamsterBallPlugin extends Plugin {
playerInfo.setOnline(false);
BallBungeeCordUtils.uploadPlayerInfo(playerInfo);
});
long time = System.currentTimeMillis() - start;
logger.info("仓鼠球启动完成,总计耗时 " + time + " ms.");
}
@Override
public void onDisable() {
long start = System.currentTimeMillis();
Logger logger = getLogger();
logger.info("仓鼠球正在关闭...");
try {
BallBungeeCordAPI.getInstance().disable();
} catch (Exception e) {
e.printStackTrace();
}
long time = System.currentTimeMillis() - start;
logger.info("仓鼠球已关闭,总计耗时 " + time + " ms.");
}
}

View File

@@ -61,7 +61,15 @@ public class BallBungeeCordAPI extends BallAPI {
)
);
DataSource datasource = BallBungeeCordUtils.getDataSource(config.getSection("datasource"));
DataSource datasource;
if (config.contains("datasource")) {
plugin.getLogger().info("检测到配置文件中包含 datasource 节点,启用自定义数据库连接.");
datasource = BallBungeeCordUtils.getDataSource(config.getSection("datasource"));
}else {
plugin.getLogger().info("未检测到配置文件中的 datasource 节点,复用 HamsterCore 数据库连接.");
datasource = CoreAPI.getInstance().getDataSource();
}
File redissionConfig = new File(plugin.getDataFolder(), "redission.yml");
if (!redissionConfig.exists()) {
Files.copy(

View File

@@ -85,7 +85,7 @@ public final class BallBungeeCordListener implements Listener, BallListener {
String serverID = event.getLocation().getServerID();
ServerInfo serverInfo = ProxyServer.getInstance().getServerInfo(serverID);
if (serverInfo == null) {
HamsterBallPlugin.getInstance().getLogger().warning("试图传送玩家时失败: 服务器 " + serverID + " 不在线");
HamsterBallPlugin.getInstance().getLogger().warning("试图传送玩家时失败: 服务器 " + serverID + " 不在线!");
break;
}
for (UUID uuid : event.getSendPlayerUUID()) {
@@ -105,7 +105,7 @@ public final class BallBungeeCordListener implements Listener, BallListener {
UUID toPlayerUUID = event.getToPlayerUUID();
ProxiedPlayer toPlayer = ProxyServer.getInstance().getPlayer(toPlayerUUID);
if (toPlayer == null) {
HamsterBallPlugin.getInstance().getLogger().warning("试图传送玩家时失败: 目标玩家 " + toPlayerUUID + " 不在线");
HamsterBallPlugin.getInstance().getLogger().warning("试图传送玩家时失败: 目标玩家 " + toPlayerUUID + " 不在线!");
break;
}
ServerInfo toServer = toPlayer.getServer().getInfo();

View File

@@ -3,7 +3,7 @@ main: cn.hamster3.mc.plugin.core.bungee.HamsterBallPlugin
version: ${version}
author: MiniDay
description: 仓鼠球:一个基于 Netty 的 Minecraft 服务端通用消息中间件原HamsterService
description: 仓鼠球:一个基于 Redis 的 Minecraft 服务端通用消息中间件原HamsterService
depend:
- HamsterCore

View File

@@ -1,17 +1,16 @@
# 是否允许在控制台输出调试信息
debug: false
ball-server:
host: "ball.hamster3.cn"
port: 58888
event-loop-thread: 5
server-info:
# 服务器唯一识别码,最长 32 字符
id: "BungeeCord"
# 服务端名称,用于展示给玩家看
name: "代理端"
# 当前子服的地址
# 不填则自动设置为 0.0.0.0
host: 0.0.0.0
# 当前子服端口
# 不填则自动设置为 25577
port: 25577
# 数据库连接池配置

View File

@@ -3,8 +3,9 @@
dependencies {
// https://mvnrepository.com/artifact/com.google.code.gson/gson
compileOnly("com.google.code.gson:gson:2.8.0")
// https://mvnrepository.com/artifact/io.netty/netty-all
compileOnly("io.netty:netty-all:4.1.86.Final")
// https://mvnrepository.com/artifact/io.netty/netty-buffer
compileOnly("io.netty:netty-buffer:4.1.96.Final")
val hamsterCoreVersion = property("hamster_core_version")
compileOnly("cn.hamster3.mc.plugin:core-common:${hamsterCoreVersion}")

View File

@@ -209,10 +209,10 @@ public abstract class BallAPI {
}
}
}
enabled = true;
RTopic topic = getRedissonClient().getTopic(BALL_CHANNEL, BallMessageInfoCodec.INSTANCE);
topic.addListener(BallMessageInfo.class, BallMessageListener.INSTANCE);
enabled = true;
}
protected void disable() throws SQLException, InterruptedException {
@@ -233,7 +233,9 @@ public abstract class BallAPI {
statement.executeUpdate();
}
}
getLogger().info("正在关闭 redission...");
getRedissonClient().shutdown();
getLogger().info("已关闭 redission.");
}
/**

View File

@@ -58,6 +58,12 @@ subprojects {
"https://bukkit.windit.net/javadoc"
)
}
shadowJar {
destinationDirectory = rootProject.buildDir
}
build {
dependsOn(shadowJar)
}
}
publishing {