package com.titizz.shorturl.config;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;

/**
 * Created by code4wt on 17/8/12.
 */
@Aspect
@Component
public class ControllerLogAspect {

    private static final Logger logger = LoggerFactory.getLogger(ControllerLogAspect.class);

    @Pointcut("execution(* com.titizz.shorturl.web.controller.*Controller.*(..))" +
            "&& @annotation(org.springframework.web.bind.annotation.RequestMapping))")
    public void requestRecord() {}

    @Before("requestRecord()")
    public void record() {
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        String ip = request.getHeader("X-Real-IP");
        String path = request.getServletPath();
        logger.info("{} access {}", ip, path);
    }
}