@Slf4j注解
@Slf4j注解
引入 import lombok.extern.slf4j.Slf4j;
替代 private final Logger logger = LoggerFactory.getLogger(当前类名.class);
只需使用注解@Slf4j;
使用@Slf4j注解需要:
1.Idea添加lombok插件
2.配置Maven依赖
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
使用@Slf4j例子:
import com.could.demo.aop.log.entity.Log; import com.could.demo.aop.log.service.LogService; import com.could.demo.aop.log.utils.RequestHolder; import com.could.demo.entity.User; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.AfterThrowing; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletRequest; import java.util.Arrays; /** * @author zhao * @date 2019-03-27 */ @Component @Aspect @Slf4j public class LogAspect { @Autowired LogService logService; private ThreadLocal<Long> currentTime = new ThreadLocal<>(); /** * 配置切入点,通用的拦截切面 */ @Pointcut("@annotation(com.could.demo.aop.log.Log)") public void logPointcut() { // 该方法无方法体,主要为了让同类中其他方法使用此切入点 } /** * 配置环绕通知,使用在方法logPointcut()上注册的切入点 * * @param joinPoint join point for advice */ @Around("logPointcut()") public void logAround(ProceedingJoinPoint joinPoint) throws Throwable { log.info("@Slf4j注解测试");//2020-03-27 17:05:58.787 INFO 9636 --- [nio-8085-exec-2] com.could.demo.aop.log.aspect.LogAspect : @Slf4j注解测试 currentTime.set(System.currentTimeMillis()); joinPoint.proceed(); Log log1 = new Log(1, System.currentTimeMillis() - currentTime.get()); HttpServletRequest request = RequestHolder.getHttpServletRequest(); //getRequestURL() 请求的是不带参数的完整路径 :http://localhost:8083/Aop/getUserDetails/45 logService.save(getUsername(), request.getRequestURL().toString(), joinPoint, log1); currentTime.remove(); } /** * 配置异常通知 * * @param joinPoint join point for advice * @param e exception */ @AfterThrowing(pointcut = "logPointcut()", throwing = "e") public void logAfterThrowing(JoinPoint joinPoint, Throwable e) { Log logError = new Log(0,System.currentTimeMillis() - currentTime.get()); currentTime.remove(); logError.setExceptionDetail(Arrays.toString(e.getStackTrace()).getBytes()); HttpServletRequest request = RequestHolder.getHttpServletRequest(); logService.save(getUsername(),request.getRequestURL().toString(),(ProceedingJoinPoint)joinPoint, logError); } /** * 获取的的当前登录用户名 * @return */ public String getUsername() { /** * 获取Security 中的用户名 * obj = getUserDetails(); * return new JSONObject(obj).get("username", String.class); */ /** * 获取session中的用户名 */ Object user1 = RequestHolder.getHttpServletRequest().getSession().getAttribute("user"); if(user1!=null){ User user = (User)user1 ; return user.getName(); } return ""; } }
打印:
2020-03-27 17:05:58.787 INFO 9636 --- [nio-8085-exec-2] com.could.demo.aop.log.aspect.LogAspect : @Slf4j注解测试

浙公网安备 33010602011771号