springboot全局日志配置

maven配置:


    org.springframework.boot
    spring-boot-starter-log4j
    1.3.8.RELEASE



    org.springframework.boot
    spring-boot-starter-aop

代码:

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
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;
import java.util.Enumeration;

@Aspect
@Component
public class WebLogAspect {

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

    @Pointcut("execution(public * xxx.xxxxxx.xxxxxxxxx.*.*(..))")
    public void webLog(){}

    @Before("webLog()")
    public void doBefore(JoinPoint joinPoint) throws Throwable{
        //接收到请求,记录请求内容
        ServletRequestAttributes attributes =  (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = attributes.getRequest();
        //记录请求内容
        logger.info("URL:"+request.getRequestURL().toString());
        logger.info("HTTP_METHOD:"+request.getMethod());
        logger.info("IP:"+request.getRemoteAddr());
        Enumeration attributeNames = request.getParameterNames();
        while(attributeNames.hasMoreElements()){
            String s = attributeNames.nextElement();
            logger.info("name:{},value:{}",s,request.getParameter(s));
        }
    }

    @AfterReturning(returning = "obj",pointcut = "webLog()")
    public void doAfterReturning(Object obj) throws Throwable{
        //处理完请求,返回内容
        logger.info("RESPONSE:"+obj);
    }
}

你可能感兴趣的:(springboot)