package com.qyf.controller;
import com.qyf.domain.SysLog;
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.context.annotation.EnableAspectJAutoProxy;
import org.springframework.security.core.context.SecurityContextImpl;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Date;
@Component
@Aspect
@EnableAspectJAutoProxy
public class SysLogController {
@Autowired
HttpServletRequest request;
@Around("execution(* com.qyf.controller.*.*(..))")
public Object pringLog(ProceedingJoinPoint pgone) {
SysLog sysLog = new SysLog();//创建日志对象
Object proceed = null;
try { //前置通知
long start=new Date().getTime(); //方法执行前时间
proceed = pgone.proceed(pgone.getArgs());
//后置通知
long end=new Date().getTime(); //方法执行结束时间
sysLog.setVisitTime(String.valueOf(end-start)); //visittime
sysLog.setMethodName(pgone.getSignature().getName()); //methodName
sysLog.setUrl(request.getRequestURI()); //url
sysLog.setIp(request.getRemoteAddr()); // ip
//获取session对象中的用户名
HttpSession session=request.getSession();
SecurityContextImpl sci = (SecurityContextImpl) session.getAttribute(" SPRING_SECURITY_CONTEXT");
sysLog.setUsername(sci.getAuthentication().getName()); //username
} catch (Throwable throwable) {
throwable.printStackTrace();
}finally {
System.out.println("---------------------------");
System.out.println(sysLog);
System.out.println("---------------------------");
}
return proceed;
}
}
来源:https://blog.csdn.net/weixin_43342054/article/details/99757981