审计日志入库完成

This commit is contained in:
2022-07-14 19:27:23 +08:00
parent f58dda8534
commit e93a3c1e08
6 changed files with 120 additions and 73 deletions

View File

@@ -57,14 +57,17 @@ public class LogServiceImpl implements ILogService {
@Async("asyncExecutor")
public void recodeAdviceLog(ServerHttpRequest request, MethodParameter returnType, HttpResult httpResult, String methodDescribe) {
//处理审计日志
String loginName;
String userName;
String userIndex ;
String userIndex;
HttpServletRequest httpServletRequest = RequestUtil.getRequest(request);
if (UN_LOGIN_METHOD.contains(methodDescribe)) {
userName = RequestUtil.getLoginName(httpServletRequest);
loginName = RequestUtil.getLoginName(httpServletRequest);
userName = "";
userIndex = userName;
} else {
userName = RequestUtil.getLoginName(request);
loginName = RequestUtil.getLoginNameByPayload(request);
userName = RequestUtil.getUserNickname(request);
userIndex = RequestUtil.getUserIndex(request);
}
String result = httpResult.getCode().equalsIgnoreCase(CommonResponseEnum.FAIL.getCode()) ? CommonResponseEnum.FAIL.getMessage() : CommonResponseEnum.SUCCESS.getMessage();
@@ -72,7 +75,7 @@ public class LogServiceImpl implements ILogService {
String type = ReflectCommonUtil.getOperateInfoByMethod(returnType.getMethod()).getOperateType();
String level = ReflectCommonUtil.getOperateInfoByMethod(returnType.getMethod()).getOperateLevel();
String operateType = ReflectCommonUtil.getOperateTypeByMethod(returnType.getMethod());
LogInfoDTO logInfoDTO = new LogInfoDTO(userName, ip, methodDescribe, operateType, result.equalsIgnoreCase("失败") ? 0 : 1, "",levelStringToNumber(level), type.equalsIgnoreCase("业务事件") ? 0 : 1, generalInfo.getMicroServiceName(), userIndex);
LogInfoDTO logInfoDTO = new LogInfoDTO(loginName, userName, ip, methodDescribe, operateType, result.equalsIgnoreCase("失败") ? 0 : 1, "", levelStringToNumber(level), type.equalsIgnoreCase("业务事件") ? 0 : 1, generalInfo.getMicroServiceName(), userIndex);
publisher.send("/userLog", PubUtils.obj2json(logInfoDTO), 2, false);
}
@@ -90,10 +93,11 @@ public class LogServiceImpl implements ILogService {
LogInfoDTO tempLogInfo = RequestUtil.initLogInfo(request);
//认证前,获取用户信息
String userIndex;
if (Objects.equals(tempLogInfo.getUserName(), LogInfo.UNKNOWN_USER)) {
tempLogInfo.setUserName(RequestUtil.getLoginName(request));
userIndex = tempLogInfo.getUserName();
}else{
if (Objects.equals(tempLogInfo.getLoginName(), LogInfo.UNKNOWN_USER)) {
tempLogInfo.setLoginName(RequestUtil.getLoginName(request));
tempLogInfo.setUserName("");
userIndex = tempLogInfo.getLoginName();
} else {
userIndex = RequestUtil.getUserIndex(request);
}
//根据异常获取method方法
@@ -106,7 +110,7 @@ public class LogServiceImpl implements ILogService {
String type = ReflectCommonUtil.getOperateInfoByMethod(method).getOperateType();
String level = ReflectCommonUtil.getOperateInfoByMethod(method).getOperateLevel();
String operateType = ReflectCommonUtil.getOperateTypeByMethod(method);
LogInfoDTO logInfoDTO = new LogInfoDTO(tempLogInfo.getUserName(), tempLogInfo.getIp(), ReflectCommonUtil.getMethodDescribeByMethod(method), operateType, result.equalsIgnoreCase("失败") ? 0 : 1,message, levelStringToNumber(level), type.equalsIgnoreCase("业务事件") ? 0 : 1, generalInfo.getMicroServiceName(), userIndex);
LogInfoDTO logInfoDTO = new LogInfoDTO(tempLogInfo.getLoginName(), tempLogInfo.getUserName(), tempLogInfo.getIp(), ReflectCommonUtil.getMethodDescribeByMethod(method), operateType, result.equalsIgnoreCase("失败") ? 0 : 1, message, levelStringToNumber(level), type.equalsIgnoreCase("业务事件") ? 0 : 1, generalInfo.getMicroServiceName(), userIndex);
publisher.send("/userLog", PubUtils.obj2json(logInfoDTO), 1, false);
}
@@ -116,11 +120,11 @@ public class LogServiceImpl implements ILogService {
* @param exception 异常数据
* @param request 请求信息
* @param message 信息
* @param userName 用户
* @param loginName 登录
*/
@Override
@Async("asyncExecutor")
public void recodeAuthExceptionLog(Exception exception, HttpServletRequest request, String message, String userName) {
public void recodeAuthExceptionLog(Exception exception, HttpServletRequest request, String message, String loginName) {
//根据异常获取method方法
Method method = ReflectCommonUtil.getMethod(exception);
if (exception instanceof MethodArgumentNotValidException) {
@@ -132,7 +136,7 @@ public class LogServiceImpl implements ILogService {
String type = ReflectCommonUtil.getOperateInfoByMethod(method).getOperateType();
String level = ReflectCommonUtil.getOperateInfoByMethod(method).getOperateLevel();
String operateType = ReflectCommonUtil.getOperateTypeByMethod(method);
LogInfoDTO logInfoDTO = new LogInfoDTO(userName, ip, ReflectCommonUtil.getMethodDescribeByMethod(method), operateType, result.equalsIgnoreCase("失败") ? 0 : 1,message, levelStringToNumber(level), type.equalsIgnoreCase("业务事件") ? 0 : 1, generalInfo.getMicroServiceName(), userName);
LogInfoDTO logInfoDTO = new LogInfoDTO(loginName, "", ip, ReflectCommonUtil.getMethodDescribeByMethod(method), operateType, result.equalsIgnoreCase("失败") ? 0 : 1, message, levelStringToNumber(level), type.equalsIgnoreCase("业务事件") ? 0 : 1, generalInfo.getMicroServiceName(), loginName);
publisher.send("/userLog", PubUtils.obj2json(logInfoDTO), 1, false);
}

View File

@@ -331,6 +331,19 @@ public class RequestUtil {
return StrUtil.isBlank(loginName) ? LogInfo.UNKNOWN_USER : loginName;
}
/**
* ServerHttpRequest获取在网关中存储的用户昵称
*/
public static String getLoginNameByPayload(ServerHttpRequest request) {
String loginName = LogInfo.UNKNOWN_USER;
JSONObject jwtPayload = getJwtPayload(request);
if (Objects.nonNull(jwtPayload)) {
String loginNameTemp = jwtPayload.getString(SecurityConstants.USER_NAME_KEY);
loginName = StrUtil.isBlank(loginNameTemp) ? LogInfo.UNKNOWN_USER : loginNameTemp;
}
return loginName;
}
/**
* ServerHttpRequest获取用户登录名
*/
@@ -376,11 +389,15 @@ public class RequestUtil {
LogInfoDTO temp = new LogInfoDTO();
temp.setIp(StrUtil.isBlank(ip) ? LogInfo.UNKNOWN_IP : ip);
String username = LogInfo.UNKNOWN_USER;
String loginName = LogInfo.UNKNOWN_USER;
JSONObject jwtPayload = getJwtPayload(request);
if (Objects.nonNull(jwtPayload)) {
String userSignTemp = jwtPayload.getString(SecurityConstants.USER_NAME_KEY);
username = StrUtil.isBlank(userSignTemp) ? LogInfo.UNKNOWN_USER : userSignTemp;
String loginNameTemp = jwtPayload.getString(SecurityConstants.USER_NAME_KEY);
loginName = StrUtil.isBlank(loginNameTemp) ? LogInfo.UNKNOWN_USER : loginNameTemp;
String userNameTemp = jwtPayload.getString(SecurityConstants.USER_NICKNAME_KEY);
username = StrUtil.isBlank(userNameTemp) ? LogInfo.UNKNOWN_USER : userNameTemp;
}
temp.setLoginName(loginName);
temp.setUserName(username);
return temp;
}