优化日志

This commit is contained in:
Xujiayao 2026-01-20 23:52:45 +08:00
parent e580b42134
commit 421e24b5f0
7 changed files with 66 additions and 65 deletions

View file

@ -108,11 +108,13 @@ public class DMCC {
int port = serverInstance.start();
if (port == -1) {
LOGGER.error(I18nManager.getDmccTranslation("main.init.failed"));
return false;
} else {
// Client instance gets the same secret to authenticate
clientInstance = new ClientDMCC("127.0.0.1", port, internalServerName, internalSharedSecret);
if (!clientInstance.start()) {
LOGGER.error(I18nManager.getDmccTranslation("main.init.failed"));
return false;
}
}
@ -125,6 +127,7 @@ public class DMCC {
clientInstance = new ClientDMCC(host, port, name, secret);
if (!clientInstance.start()) {
LOGGER.error(I18nManager.getDmccTranslation("main.init.failed"));
return false;
}
}
@ -135,6 +138,7 @@ public class DMCC {
serverInstance = new ServerDMCC(host, port, secret);
if (serverInstance.start() == -1) {
LOGGER.error(I18nManager.getDmccTranslation("main.init.failed"));
return false;
}
}

View file

@ -41,11 +41,11 @@ public class ClientHandler extends SimpleChannelInboundHandler<Packet> {
@Override
public void channelInactive(ChannelHandlerContext ctx) {
LOGGER.info(I18nManager.getDmccTranslation("network.client.disconnected_generic"));
LOGGER.info(I18nManager.getDmccTranslation("client.network.disconnected_generic"));
// Trigger reconnection if this was not an intentional stop
if (client.isRunning()) {
LOGGER.info(I18nManager.getDmccTranslation("network.client.reconnecting"));
LOGGER.info(I18nManager.getDmccTranslation("client.network.reconnecting"));
client.scheduleReconnect();
}
}
@ -58,7 +58,7 @@ public class ClientHandler extends SimpleChannelInboundHandler<Packet> {
} else if (packet instanceof LoginSuccessPacket p) {
I18nManager.load(p.language);
LOGGER.info(I18nManager.getDmccTranslation("network.client.connected"));
LOGGER.info(I18nManager.getDmccTranslation("client.network.connected"));
if (!initialLoginFuture.isDone()) {
initialLoginFuture.complete(true);
@ -66,7 +66,7 @@ public class ClientHandler extends SimpleChannelInboundHandler<Packet> {
} else if (packet instanceof DisconnectPacket p) {
String reason = I18nManager.getDmccTranslation(p.key, p.args);
LOGGER.error(I18nManager.getDmccTranslation("network.client.disconnected_reason", reason));
LOGGER.error(I18nManager.getDmccTranslation("client.network.disconnected_reason", reason));
if (!initialLoginFuture.isDone()) {
initialLoginFuture.complete(false);
@ -88,7 +88,7 @@ public class ClientHandler extends SimpleChannelInboundHandler<Packet> {
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
LOGGER.error(I18nManager.getDmccTranslation("network.client.connect_failed"), cause);
LOGGER.error(I18nManager.getDmccTranslation("client.network.connect_failed"), cause);
if (!initialLoginFuture.isDone()) {
initialLoginFuture.complete(false);
}

View file

@ -71,7 +71,7 @@ public class NettyClient {
// Wait for the INITIAL handshake to complete
return initialLoginFuture.get(10, TimeUnit.SECONDS);
} catch (Exception e) {
LOGGER.error(I18nManager.getDmccTranslation("network.client.connect_failed"), e);
LOGGER.error(I18nManager.getDmccTranslation("client.network.connect_failed"), e);
stop();
return false;
}
@ -99,7 +99,7 @@ public class NettyClient {
});
if (isInitialAttempt) {
LOGGER.info(I18nManager.getDmccTranslation("network.client.connecting", host, port));
LOGGER.info(I18nManager.getDmccTranslation("client.network.connecting", host, port));
}
b.connect(host, port).addListener((ChannelFuture future) -> {
@ -110,7 +110,7 @@ public class NettyClient {
if (isInitialAttempt) {
initialLoginFuture.completeExceptionally(future.cause());
} else {
LOGGER.warn(I18nManager.getDmccTranslation("network.client.reconnect_failed", reconnectDelay.get()));
LOGGER.warn(I18nManager.getDmccTranslation("client.network.reconnect_failed", reconnectDelay.get()));
scheduleReconnect();
}
}

View file

@ -76,11 +76,11 @@ public class NettyServer {
ChannelFuture channelFuture = b.bind(host, port).sync();
int boundPort = ((InetSocketAddress) channelFuture.channel().localAddress()).getPort();
LOGGER.info(I18nManager.getDmccTranslation("network.server.listening", boundPort));
LOGGER.info(I18nManager.getDmccTranslation("server.network.listening", boundPort));
return boundPort;
} catch (Exception e) {
LOGGER.error(I18nManager.getDmccTranslation("network.server.bind_failed", port), e);
LOGGER.error(I18nManager.getDmccTranslation("server.network.bind_failed", port), e);
return -1;
}
}

View file

@ -44,7 +44,7 @@ public class ServerHandler extends SimpleChannelInboundHandler<Packet> {
@Override
public void channelInactive(ChannelHandlerContext ctx) {
if (clientName != null) {
LOGGER.info(I18nManager.getDmccTranslation("network.server.client_disconnected_normal", clientName));
LOGGER.info(I18nManager.getDmccTranslation("server.network.client_disconnected_normal", clientName));
}
}
@ -53,15 +53,17 @@ public class ServerHandler extends SimpleChannelInboundHandler<Packet> {
switch (packet) {
case HandshakePacket p -> {
if (!isWhitelisted(p.serverName)) {
LOGGER.warn(I18nManager.getDmccTranslation("network.server.whitelist_refused", p.serverName));
ctx.writeAndFlush(new DisconnectPacket("network.disconnect.not_whitelisted", p.serverName));
String reason = I18nManager.getDmccTranslation("server.network.disconnect_reasons.not_whitelisted", p.serverName);
LOGGER.warn(I18nManager.getDmccTranslation("server.network.reject", clientName, reason));
ctx.writeAndFlush(new DisconnectPacket("server.network.disconnect_reasons.not_whitelisted", p.serverName));
ctx.close();
return;
}
if (!Constants.VERSION.equals(p.version)) {
LOGGER.warn(I18nManager.getDmccTranslation("network.server.version_mismatch", p.version, Constants.VERSION));
ctx.writeAndFlush(new DisconnectPacket("network.disconnect.version_mismatch", p.version, Constants.VERSION));
String reason = I18nManager.getDmccTranslation("server.network.disconnect_reasons.version_mismatch", p.version, Constants.VERSION);
LOGGER.warn(I18nManager.getDmccTranslation("server.network.reject", clientName, reason));
ctx.writeAndFlush(new DisconnectPacket("server.network.disconnect_reasons.version_mismatch", p.version, Constants.VERSION));
ctx.close();
return;
}
@ -75,12 +77,13 @@ public class ServerHandler extends SimpleChannelInboundHandler<Packet> {
if (correctHash.equals(p.hash)) {
this.authenticated = true;
LOGGER.info(I18nManager.getDmccTranslation("network.server.auth_success", clientName));
LOGGER.info(I18nManager.getDmccTranslation("server.network.auth_success", clientName));
ctx.writeAndFlush(new LoginSuccessPacket(ConfigManager.getString("language")));
// TODO: Add to active clients list
} else {
LOGGER.warn(I18nManager.getDmccTranslation("network.server.auth_failed", clientName));
ctx.writeAndFlush(new DisconnectPacket("network.disconnect.auth_failed"));
String reason = I18nManager.getDmccTranslation("server.network.disconnect_reasons.auth_failed");
LOGGER.warn(I18nManager.getDmccTranslation("server.network.reject", clientName, reason));
ctx.writeAndFlush(new DisconnectPacket("server.network.disconnect_reasons.auth_failed"));
ctx.close();
}
}
@ -90,7 +93,9 @@ public class ServerHandler extends SimpleChannelInboundHandler<Packet> {
case null, default -> {
// Handle other packets if authenticated
if (!authenticated) {
ctx.writeAndFlush(new DisconnectPacket("network.disconnect.not_authenticated"));
String reason = I18nManager.getDmccTranslation("server.network.disconnect_reasons.not_authenticated");
LOGGER.warn(I18nManager.getDmccTranslation("server.network.reject", clientName, reason));
ctx.writeAndFlush(new DisconnectPacket("server.network.disconnect_reasons.not_authenticated"));
ctx.close();
}
}
@ -101,7 +106,7 @@ public class ServerHandler extends SimpleChannelInboundHandler<Packet> {
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
if (evt instanceof IdleStateEvent e) {
if (e.state() == IdleState.READER_IDLE) {
LOGGER.warn(I18nManager.getDmccTranslation("network.server.client_timeout", clientName != null ? clientName : "unknown"));
LOGGER.warn(I18nManager.getDmccTranslation("server.network.client_timeout", clientName != null ? clientName : "unknown"));
ctx.close();
}
} else {

View file

@ -61,33 +61,29 @@ discord:
server:
discord_init_failed: "Failed to initialize Discord Manager. Aborting DMCC Server startup."
startup_interrupted: "DMCC Server startup was interrupted."
network:
listening: "DMCC Server is now listening on port {}."
bind_failed: "Failed to bind to port {}."
reject: "Rejected DMCC Client \"{}\" connection. Reason: {}"
auth_success: "DMCC Client authenticated: \"{}\""
client_disconnected_normal: "DMCC Client has disconnected: \"{}\""
client_timeout: "DMCC Client has timed out, disconnecting: \"{}\""
disconnect_reasons:
not_whitelisted: "Name \"{}\" is not whitelisted."
version_mismatch: "Version mismatch. Client: {}, Server: {}"
auth_failed: "Authentication failed. Please check your shared secret."
not_authenticated: "Not authenticated."
client:
startup_interrupted: "DMCC Client startup was interrupted."
network:
client:
connecting: "Connecting to DMCC Server at {}:{}."
network:
connecting: "Connecting to DMCC Server at {}:{}..."
connected: "Connected to DMCC Server!"
connect_failed: "Failed to connect to DMCC Server."
disconnected_generic: "Disconnected from server."
disconnected_reason: "Disconnected from server: {}."
reconnecting: "Reconnecting to server..."
disconnected_generic: "Disconnected from DMCC Server."
disconnected_reason: "Disconnected from DMCC Server. Reason: {}"
reconnecting: "Reconnecting to DMCC Server..."
reconnect_failed: "Reconnection failed. Retrying in {} seconds."
server:
listening: "DMCC Server listening on port {}."
bind_failed: "Failed to bind to port {}."
auth_success: "Client authenticated: {}."
auth_failed: "Client authentication failed: {}."
whitelist_refused: "Server name \"{}\" is not whitelisted."
version_mismatch: "Version mismatch. Client: {}, Server: {}."
client_disconnected_normal: "Client disconnected: {}."
client_timeout: "Client timed out: {}."
disconnect:
not_whitelisted: "Server name \"{}\" is not whitelisted."
version_mismatch: "Version mismatch. Client: {}, Server: {}."
auth_failed: "Authentication failed. Please check shared_secret."
not_authenticated: "Not authenticated."
utils:
config:

View file

@ -59,35 +59,31 @@ discord:
reply_failed_detail: "对于 reload/shutdown 命令,这是预期的行为。"
server:
discord_init_failed: "初始化 Discord Manager 失败。正在中止 DMCC 服务端启动。"
discord_init_failed: "初始化 Discord 管理器失败。正在中止 DMCC 服务端启动。"
startup_interrupted: "DMCC 服务端启动被中断。"
network:
listening: "DMCC 服务端正在监听端口 {}。"
bind_failed: "无法绑定端口 {}。"
reject: "拒绝与 DMCC 客户端 \"{}\" 连接。原因:{}"
auth_success: "DMCC 客户端连接成功:\"{}\""
client_disconnected_normal: "DMCC 客户端已断开连接:\"{}\""
client_timeout: "DMCC 客户端已超时,正在断开连接:\"{}\""
disconnect_reasons:
not_whitelisted: "名称 \"{}\" 不在白名单中。"
version_mismatch: "版本不匹配。客户端:{},服务端:{}"
auth_failed: "验证失败。请检查你的共享密钥。"
not_authenticated: "未通过验证。"
client:
startup_interrupted: "DMCC 客户端启动被中断。"
network:
client:
connecting: "正在连接至 DMCC Server {}:{}。"
connected: "已连接至 DMCC Server"
connect_failed: "无法连接至 DMCC Server。"
disconnected_generic: "已与服务器断开连接。"
disconnected_reason: "已与服务器断开连接:{}。"
reconnecting: "正在重新连接至服务器..."
network:
connecting: "正在通过 {}:{} 连接至 DMCC 服务端..."
connected: "已连接至 DMCC 服务端!"
connect_failed: "无法连接至 DMCC 服务端。"
disconnected_generic: "已与 DMCC 服务端断开连接。"
disconnected_reason: "已与 DMCC 服务端断开连接。原因:{}"
reconnecting: "正在重新连接至 DMCC 服务端..."
reconnect_failed: "重连失败。将在 {} 秒后重试。"
server:
listening: "DMCC Server 正在监听端口 {}。"
bind_failed: "无法绑定端口 {}。"
auth_success: "客户端验证成功:{}。"
auth_failed: "客户端验证失败:{}。"
whitelist_refused: "服务器名称 \"{}\" 不在白名单中。"
version_mismatch: "版本不匹配。客户端:{},服务端:{}。"
client_disconnected_normal: "客户端已断开连接:{}。"
client_timeout: "客户端超时:{}。"
disconnect:
not_whitelisted: "服务器名称 \"{}\" 不在白名单中。"
version_mismatch: "版本不匹配。客户端:{},服务端:{}。"
auth_failed: "验证失败。请检查 shared_secret。"
not_authenticated: "未通过验证。"
utils:
config: