增加日志输出

This commit is contained in:
qaq
2025-08-15 19:45:22 +08:00
parent 8f4d5897fa
commit 5be8082d96
11 changed files with 65 additions and 54 deletions
@@ -137,9 +137,9 @@ public class LogAspect {
);
// 打印单条完整异常日志
log.error(errorMessage, ex);
log.info(errorMessage, ex);
} catch (Exception e) {
log.error("记录异常日志时出错: {}", e.getMessage());
log.info("记录异常日志时出错: {}", e.getMessage());
}
}
@@ -21,20 +21,20 @@ public class GlobalExceptionHandler {
public R MethodArgumentNotValidException(MethodArgumentNotValidException e) {
BindingResult result = e.getBindingResult();
ObjectError objectError = result.getAllErrors().stream().findFirst().get();
log.error("实体校验异常:----------------{}", objectError.getDefaultMessage());
log.info("实体校验异常:----------------{}", objectError.getDefaultMessage());
return R.err(500, objectError.getDefaultMessage());
}
// 未授权异常捕获
@ExceptionHandler(value = UnauthorizedException.class)
public R handleUnauthorizedException(UnauthorizedException e) {
log.error("未授权异常:----------------{}", e.getMessage());
log.info("未授权异常:----------------{}", e.getMessage());
return R.err(401, e.getMessage());
}
@ExceptionHandler(value = Exception.class)
public R Exception(Exception e){
log.error("异常:----------------{}", e.getMessage());
log.info("异常:----------------{}", e.getMessage());
return R.err(-2, e.getMessage());
}
@@ -74,7 +74,7 @@ public class CheckGostConfigAsync {
if (Objects.equals(type, "tcp")) { // 只处理TCP,避免重复处理
Forward forward = forwardService.getById(forwardId);
if (forward == null) {
log.warn("删除孤立的服务: {} (节点: {})", service.getName(), node.getId());
log.info("删除孤立的服务: {} (节点: {})", service.getName(), node.getId());
GostDto gostDto = GostUtil.DeleteService(node.getId(), forwardId + "_" + userId + "_" + userTunnelId);
System.out.println(gostDto);
}
@@ -82,7 +82,7 @@ public class CheckGostConfigAsync {
if (Objects.equals(type, "tls")) {
Forward forward = forwardService.getById(forwardId);
if (forward == null) {
log.warn("删除孤立的服务: {} (节点: {})", service.getName(), node.getId());
log.info("删除孤立的服务: {} (节点: {})", service.getName(), node.getId());
GostUtil.DeleteRemoteService(node.getId(), forwardId+"_"+userId+"_"+userTunnelId);
}
}
@@ -112,7 +112,7 @@ public class CheckGostConfigAsync {
if (Objects.equals(type, "chains")) {
Forward forward = forwardService.getById(forwardId);
if (forward == null) {
log.warn("删除孤立的链: {} (节点: {})", chain.getName(), node.getId());
log.info("删除孤立的链: {} (节点: {})", chain.getName(), node.getId());
GostUtil.DeleteChains(node.getId(), forwardId+"_"+userId+"_"+userTunnelId);
}
}
@@ -134,7 +134,7 @@ public class CheckGostConfigAsync {
safeExecute(() -> {
SpeedLimit speedLimit = speedLimitService.getById(limiter.getName());
if (speedLimit == null) {
log.warn("删除孤立的限流器: {} (节点: {})", limiter.getName(), node.getId());
log.info("删除孤立的限流器: {} (节点: {})", limiter.getName(), node.getId());
GostUtil.DeleteLimiters(node.getId(), Long.parseLong(limiter.getName()));
}
}, "清理限流器 " + limiter.getName());
@@ -148,7 +148,7 @@ public class CheckGostConfigAsync {
try {
operation.run();
} catch (Exception e) {
log.error("执行操作失败: {}", operationDesc, e);
log.info("执行操作失败: {}", operationDesc, e);
}
}
@@ -78,7 +78,7 @@ public class ResetFlowAsync {
log.info("到期任务执行完成");
} catch (Exception e) {
log.error("定时任务执行失败", e);
log.info("定时任务执行失败", e);
}
}
@@ -126,12 +126,12 @@ public class ResetFlowAsync {
log.info("用户[ID: {}, 用户名: {}]流量重置成功,重置日期: 每月{}号",
user.getId(), user.getUser(), user.getFlowResetTime());
} else {
log.error("用户[ID: {}, 用户名: {}]流量重置失败", user.getId(), user.getUser());
log.info("用户[ID: {}, 用户名: {}]流量重置失败", user.getId(), user.getUser());
}
}
} catch (Exception e) {
log.error("重置用户流量失败", e);
log.info("重置用户流量失败", e);
}
}
@@ -179,13 +179,13 @@ public class ResetFlowAsync {
log.info("用户隧道[ID: {}, 用户ID: {}, 隧道ID: {}]流量重置成功,重置日期: 每月{}号",
userTunnel.getId(), userTunnel.getUserId(), userTunnel.getTunnelId(), userTunnel.getFlowResetTime());
} else {
log.error("用户隧道[ID: {}, 用户ID: {}, 隧道ID: {}]流量重置失败",
log.info("用户隧道[ID: {}, 用户ID: {}, 隧道ID: {}]流量重置失败",
userTunnel.getId(), userTunnel.getUserId(), userTunnel.getTunnelId());
}
}
} catch (Exception e) {
log.error("重置用户隧道流量失败", e);
log.info("重置用户隧道流量失败", e);
}
}
@@ -42,9 +42,9 @@ public class AESCrypto {
this.secretKey = new SecretKeySpec(keyBytes, ALGORITHM);
this.secureRandom = new SecureRandom();
log.debug("AES加密器初始化成功");
log.info("AES加密器初始化成功");
} catch (Exception e) {
log.error("AES加密器初始化失败", e);
log.info("AES加密器初始化失败", e);
throw new RuntimeException("AES加密器初始化失败: " + e.getMessage(), e);
}
}
@@ -83,7 +83,7 @@ public class AESCrypto {
return Base64.getEncoder().encodeToString(buffer.array());
} catch (Exception e) {
log.error("数据加密失败", e);
log.info("数据加密失败", e);
throw new RuntimeException("数据加密失败: " + e.getMessage(), e);
}
}
@@ -137,7 +137,7 @@ public class AESCrypto {
return cipher.doFinal(ciphertext);
} catch (Exception e) {
log.error("数据解密失败", e);
log.info("数据解密失败", e);
throw new RuntimeException("数据解密失败: " + e.getMessage(), e);
}
}
@@ -161,7 +161,7 @@ public class AESCrypto {
try {
return new AESCrypto(secret);
} catch (Exception e) {
log.error("创建AES加密器失败: {}", e.getMessage());
log.info("创建AES加密器失败: {}", e.getMessage());
return null;
}
}
@@ -112,7 +112,7 @@ public class WebSocketServer extends TextWebSocketHandler {
}
}
} catch (Exception e) {
log.error("处理响应消息失败: {}", e.getMessage(), e);
log.info("处理响应消息失败: {}", e.getMessage(), e);
}
} else {
log.info("收到消息: {}", decryptedPayload);
@@ -135,7 +135,7 @@ public class WebSocketServer extends TextWebSocketHandler {
}
}
} catch (Exception e) {
log.error("处理WebSocket消息时发生异常: {}", e.getMessage(), e);
log.info("处理WebSocket消息时发生异常: {}", e.getMessage(), e);
}
}
@@ -155,18 +155,18 @@ public class WebSocketServer extends TextWebSocketHandler {
// 获取或创建加密器
AESCrypto crypto = getOrCreateCrypto(nodeSecret);
if (crypto == null) {
log.warn("⚠️ 收到加密消息但无法创建解密器,使用原始数据");
log.info("⚠️ 收到加密消息但无法创建解密器,使用原始数据");
return payload;
}
// 解密数据
String decryptedData = crypto.decryptString(encryptedMessage.getData());
log.debug("🔓 WebSocket消息解密成功");
log.info("🔓 WebSocket消息解密成功");
return decryptedData;
}
} catch (Exception e) {
// 解析失败,可能是非加密格式,直接返回原始数据
log.debug("WebSocket消息未加密或解密失败,使用原始数据: {}", e.getMessage());
log.info("WebSocket消息未加密或解密失败,使用原始数据: {}", e.getMessage());
}
return payload;
@@ -191,11 +191,11 @@ public class WebSocketServer extends TextWebSocketHandler {
encryptedMessage.put("data", encryptedData);
encryptedMessage.put("timestamp", System.currentTimeMillis());
log.debug("🔐 WebSocket消息加密成功");
log.info("🔐 WebSocket消息加密成功");
return encryptedMessage.toJSONString();
}
} catch (Exception e) {
log.warn("⚠️ WebSocket消息加密失败,发送原始数据: {}", e.getMessage());
log.info("⚠️ WebSocket消息加密失败,发送原始数据: {}", e.getMessage());
}
return message;
@@ -232,7 +232,7 @@ public class WebSocketServer extends TextWebSocketHandler {
// 检查是否已有该节点的连接,如果有则记录日志但直接覆盖
WebSocketSession existingSession = nodeSessions.get(nodeId);
if (existingSession != null && existingSession.isOpen()) {
log.warn("节点 {} 已有连接存在: {},新连接将覆盖旧连接", nodeId, existingSession.getId());
log.info("节点 {} 已有连接存在: {},新连接将覆盖旧连接", nodeId, existingSession.getId());
// 清理旧连接的锁对象
sessionLocks.remove(existingSession.getId());
}
@@ -246,7 +246,7 @@ public class WebSocketServer extends TextWebSocketHandler {
log.info("主动关闭节点 {} 的旧连接: {}", nodeId, existingSession.getId());
existingSession.close();
} catch (Exception e) {
log.error("关闭节点 {} 旧连接失败: {}", nodeId, e.getMessage());
log.info("关闭节点 {} 旧连接失败: {}", nodeId, e.getMessage());
}
}
@@ -270,17 +270,17 @@ public class WebSocketServer extends TextWebSocketHandler {
res.put("data", 1);
broadcastMessage(res.toJSONString());
} else {
log.error("节点 {} 状态更新失败", nodeId);
log.info("节点 {} 状态更新失败", nodeId);
}
} else {
log.error("节点 {} 不存在,无法更新状态", nodeId);
log.info("节点 {} 不存在,无法更新状态", nodeId);
// 移除无效的会话
nodeSessions.remove(nodeId);
}
}
} catch (Exception e) {
log.error("建立连接时发生异常: {}", e.getMessage(), e);
log.info("建立连接时发生异常: {}", e.getMessage(), e);
// 异常情况下,确保清理会话
try {
String id = session.getAttributes().get("id").toString();
@@ -288,10 +288,10 @@ public class WebSocketServer extends TextWebSocketHandler {
if (Objects.equals(type, "1")) {
Long nodeId = Long.valueOf(id);
nodeSessions.remove(nodeId);
log.warn("由于异常,移除节点 {} 的会话", nodeId);
log.info("由于异常,移除节点 {} 的会话", nodeId);
}
} catch (Exception cleanupException) {
log.error("清理异常会话时出错: {}", cleanupException.getMessage());
log.info("清理异常会话时出错: {}", cleanupException.getMessage());
}
}
}
@@ -341,10 +341,10 @@ public class WebSocketServer extends TextWebSocketHandler {
res.put("data", 0);
broadcastMessage(res.toJSONString());
} else {
log.error("节点 {} 状态更新为离线失败", nodeId);
log.info("节点 {} 状态更新为离线失败", nodeId);
}
} else {
log.warn("节点 {} 不存在,无法更新离线状态", nodeId);
log.info("节点 {} 不存在,无法更新离线状态", nodeId);
}
}
@@ -352,7 +352,7 @@ public class WebSocketServer extends TextWebSocketHandler {
sessionLocks.remove(sessionId);
} catch (Exception e) {
log.error("关闭连接时发生异常: {}", e.getMessage(), e);
log.info("关闭连接时发生异常: {}", e.getMessage(), e);
}
}
@@ -383,7 +383,7 @@ public class WebSocketServer extends TextWebSocketHandler {
socketSession.sendMessage(new TextMessage(finalMessage));
}
} catch (Exception e) {
log.error("发送WebSocket消息失败 [sessionId={}]: {}", sessionId, e.getMessage());
log.info("发送WebSocket消息失败 [sessionId={}]: {}", sessionId, e.getMessage());
cleanupSession(socketSession);
}
}
@@ -428,14 +428,14 @@ public class WebSocketServer extends TextWebSocketHandler {
WebSocketSession nodeSession = nodeSessions.get(node_id);
if (nodeSession == null) {
log.warn("发送消息失败:节点 {} 不在线或会话不存在", node_id);
log.info("发送消息失败:节点 {} 不在线或会话不存在", node_id);
GostDto result = new GostDto();
result.setMsg("节点不在线");
return result;
}
if (!nodeSession.isOpen()) {
log.warn("发送消息失败:节点 {} 连接已断开,清理会话", node_id);
log.info("发送消息失败:节点 {} 连接已断开,清理会话", node_id);
nodeSessions.remove(node_id);
sessionLocks.remove(nodeSession.getId());
GostDto result = new GostDto();
@@ -461,7 +461,7 @@ public class WebSocketServer extends TextWebSocketHandler {
sendToUser(nodeSession, data.toJSONString(), nodeSecret);
GostDto result = future.get(10, TimeUnit.SECONDS);
log.debug("成功发送消息到节点 {} 并收到响应: {}", node_id, result.getMsg());
log.info("成功发送消息到节点 {} 并收到响应: {}", node_id, result.getMsg());
return result;
} catch (Exception e) {
@@ -471,10 +471,10 @@ public class WebSocketServer extends TextWebSocketHandler {
GostDto result = new GostDto();
if (e instanceof java.util.concurrent.TimeoutException) {
result.setMsg("等待响应超时");
log.warn("节点 {} 响应超时,可能存在连接问题", node_id);
log.info("节点 {} 响应超时,可能存在连接问题", node_id);
} else {
result.setMsg("发送消息失败: " + e.getMessage());
log.error("发送消息到节点 {} 失败: {}", node_id, e.getMessage(), e);
log.info("发送消息到节点 {} 失败: {}", node_id, e.getMessage(), e);
}
return result;
}