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