日志获取IP对应的地区加缓存,排除GET请求

This commit is contained in:
Tankaikai
2025-03-07 14:21:25 +08:00
parent 707798a665
commit 16b7f78d55

View File

@@ -1,7 +1,9 @@
package com.czg.log.aspect;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.exceptions.ExceptionUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.servlet.JakartaServletUtil;
import cn.hutool.json.JSONUtil;
@@ -13,6 +15,7 @@ import com.czg.log.enums.LogTypeEnum;
import com.czg.log.enums.OperationStatusEnum;
import com.czg.log.producer.LogProducer;
import com.czg.sa.StpKit;
import com.czg.service.RedisService;
import com.czg.utils.AddressUtil;
import com.czg.utils.HttpContextUtil;
import com.mybatisflex.core.keygen.impl.SnowFlakeIDKeyGenerator;
@@ -44,6 +47,9 @@ public class OperationLogAspect {
@Resource
private LogProducer logProducer;
@Resource
private RedisService redisService;
@Pointcut("@annotation(com.czg.log.annotation.OperationLog)")
public void logPointCut() {
@@ -108,9 +114,20 @@ public class OperationLogAspect {
//请求相关信息
HttpServletRequest request = HttpContextUtil.getHttpServletRequest();
String requestMethod = request.getMethod();
if ("GET".equalsIgnoreCase(requestMethod)) {
return;
}
String ip = JakartaServletUtil.getClientIP(request);
log.set("ip", ip);
log.set("location", AddressUtil.getRealAddressByIp(ip));
Object location = redisService.get("IP::" + ip);
if (ObjUtil.isNotNull(location)) {
log.set("location", Convert.toStr(location));
} else {
String address = AddressUtil.getRealAddressByIp(ip);
redisService.set("IP::" + ip, address);
log.set("location", address);
}
log.set("userAgent", request.getHeader(HttpHeaders.USER_AGENT));
log.set("requestUri", request.getRequestURI());
log.set("requestMethod", request.getMethod());