springboot利用@Aspect实现日志工具类的详细代码
更新时间:2022年03月21日 14:47:21 作者:java-zh
这篇文章主要介绍了springboot利用@Aspect实现日志工具类,通过实例代码介绍了导包及在启动类上进行注解自动扫描的方法,需要的朋友可以参考下
一、导包
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.12</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.4</version>
</dependency>二、在启动类上进行注解自动扫描
@SpringBootApplication
@EnableCaching
@EnableAsync
@ComponentScan({"com.workorder.*"})
public class WorkOrderApplication {
public static void main(String[] args) {
SpringApplication.run(WorkOrderApplication.class, args);
}
}三、工具类
@Aspect
@Component
@Slf4j
public class LogAspect {
@Autowired
private Environment env;
@Pointcut("execution(public * com.workorder..controller..*.*(..))")
public void logPointCut()
{}
@Around("logPointCut()")
public Object around(ProceedingJoinPoint point) throws Throwable {
log.info("=========================================");
long beginTime = System.currentTimeMillis();
//执行方法
Object result = point.proceed();
//执行时长(毫秒)
long time = System.currentTimeMillis() - beginTime;
//保存日志
saveSysLog(point, time);
return result;
}
private void saveSysLog(ProceedingJoinPoint joinPoint, long time) {
// 接收到请求,记录请求内容
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
String logStr="";
if (isEnvironment("dev")){
String requestUrl = request.getRequestURL().toString() + "?";
//获取所有参数方法
Enumeration<String> enu=request.getParameterNames();
while(enu.hasMoreElements()){
String paraName = enu.nextElement();
requestUrl+=paraName + "=" + request.getParameter(paraName) + "&";
}
logStr+="\r\n请求地址:"+ requestUrl.substring(0,requestUrl.length()-1);
}
//请求的参数
Object[] args = joinPoint.getArgs();
String params = JSONUtil.toJsonStr(args);
logStr+="\r\n请求方式:"+ request.getMethod();
logStr+="\r\n请求方法Token:"+ request.getHeader("token");
logStr+="\r\n请求参数:"+ params;
logStr+="\r\nIP:"+ request.getRemoteAddr();
logStr+="\r\n响应时间:"+ time+" ms";
log.info(logStr);
/**
* 判断当前是什么环境
* @param str
* @return
*/
private boolean isEnvironment(String str) {
boolean flag = false;
String[] arr = env.getActiveProfiles();
List<String> list = Arrays.asList(arr);
if (list.contains(str)) {
flag = true;
}
return flag;
}
}四、结果

到此这篇关于springboot利用@Aspect实现日志工具类的详细代码的文章就介绍到这了,更多相关springboot日志工具类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
java8 filter方法、Predicate接口的使用方式
这篇文章主要介绍了java8 filter方法、Predicate接口的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-07-07
详解SpringBoot+SpringSecurity+jwt整合及初体验
这篇文章主要介绍了详解SpringBoot+SpringSecurity+jwt整合及初体验,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-06-06
SpringBoot中application.yml基本配置解读
文章主要介绍了Spring Boot项目中`application.properties`和`application.yml`配置文件的使用方法和区别,包括优先级、配置文件所在目录、端口服务配置、数据库配置、多profile配置以及静态资源路径的指定2024-12-12
idea神级插件及如何安装Bito插件【Bito-ChatGPT】
这篇文章主要介绍了介绍一款idea神级插件【Bito-ChatGPT】,Bito插件的强大之处在于它可以帮助开发人员更快地提交代码,同时还提供了一些有用的功能,如自动补全提交信息、快速查看历史记录等,需要的朋友可以参考下2023-04-04


最新评论