1、日志切面编码
parent
0048b28dd3
commit
09fc9c1df4
@ -0,0 +1,82 @@
|
||||
package com.sztzjy.forex.trading_trading.annotation.aspect;
|
||||
|
||||
import cn.hutool.core.util.URLUtil;
|
||||
import cn.hutool.extra.servlet.ServletUtil;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import com.sztzjy.forex.trading_trading.annotation.OperateLog;
|
||||
import com.sztzjy.forex.trading_trading.config.LogRecordEvent;
|
||||
import com.sztzjy.forex.trading_trading.config.SpringContextHolder;
|
||||
import com.sztzjy.forex.trading_trading.config.security.JwtUser;
|
||||
import com.sztzjy.forex.trading_trading.config.security.TokenProvider;
|
||||
import com.sztzjy.forex.trading_trading.entity.Log;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.aspectj.lang.ProceedingJoinPoint;
|
||||
import org.aspectj.lang.annotation.Around;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.Ordered;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
/**
|
||||
* 系统日志切面实现
|
||||
*
|
||||
*/
|
||||
@Aspect
|
||||
@Slf4j
|
||||
@Component
|
||||
public class OperateLogAspect implements Ordered {
|
||||
@Autowired
|
||||
private HttpServletRequest request;
|
||||
|
||||
@Around("@annotation(operateLog)")
|
||||
@SneakyThrows
|
||||
public Object around(ProceedingJoinPoint point, OperateLog operateLog) {
|
||||
String strClassName = point.getTarget().getClass().getName();
|
||||
String strMethodName = point.getSignature().getName();
|
||||
log.debug("[类名]:{},[方法]:{}", strClassName, strMethodName);
|
||||
Log logRecord = geLog(operateLog.recordParameters(), operateLog.description());
|
||||
// 发送异步日志事件
|
||||
Object obj = point.proceed();
|
||||
SpringContextHolder.publishEvent(new LogRecordEvent(logRecord));
|
||||
return obj;
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析日志
|
||||
*
|
||||
* @param recordParameters 记录参数
|
||||
* @param description 描述
|
||||
* @return log
|
||||
*/
|
||||
private Log geLog(boolean recordParameters, String description) {
|
||||
Log logRecord = new Log();
|
||||
JwtUser curUser = null;
|
||||
try {
|
||||
curUser = TokenProvider.getJWTUser(request);
|
||||
} catch (Exception e) {
|
||||
logRecord.setOperatorName("匿名");
|
||||
}
|
||||
|
||||
if (curUser != null) {
|
||||
logRecord.setOperatorId(curUser.getUserId());
|
||||
logRecord.setOperatorName(curUser.getName());
|
||||
}
|
||||
|
||||
logRecord.setIpAddress(ServletUtil.getClientIP(request));
|
||||
logRecord.setAction(URLUtil.getPath(request.getRequestURI()));
|
||||
logRecord.setUserAgent(request.getHeader("user-agent"));
|
||||
logRecord.setDescription(description);
|
||||
if (recordParameters) {
|
||||
logRecord.setParams(HttpUtil.toParams(request.getParameterMap()));
|
||||
}
|
||||
return logRecord;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOrder() {
|
||||
return Ordered.HIGHEST_PRECEDENCE + 1;
|
||||
}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package com.sztzjy.forex.trading_trading.config;
|
||||
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
|
||||
/**
|
||||
* 系统日志事件捕获
|
||||
*
|
||||
*/
|
||||
public class LogRecordEvent extends ApplicationEvent {
|
||||
private static final long serialVersionUID = -7520983571492156143L;
|
||||
public LogRecordEvent(Object source) {
|
||||
super(source);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue