maven
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.10</version>
</dependency>
xml配置
<beans
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd>
<aop:aspectj-autoproxy/>
切面
@Aspect
@Component
public class AopLog {
private HttpServletRequest request;
@Autowired
public void setRequest(HttpServletRequest request) {
this.request = request;
}
private String getClientIp() {
String ip = request.getHeader("Cdn-Src-Ip");
if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("x-forwarded-for");
}
if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
@Around("execution(* com.cloud.monitor.controller.instance.*.*(..))")
public String controller(ProceedingJoinPoint joinPoint) throws Throwable {
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ").format(new Date()) + getClientIp());
System.out.print(joinPoint.getSignature() + " -> param:");
for (Object obj : joinPoint.getArgs()) {
System.out.print("\t");
System.out.print(obj);
}
System.out.println();
Object result = joinPoint.proceed();
System.out.println("result:" + result);
return (String) result;
}
@Around("execution(* com.cloud.monitor.service.*.*(..))")
public Object service(ProceedingJoinPoint joinPoint) throws Throwable {
return joinPoint.proceed();
}
}