package com.feifanmaster.xtool.aop;
import java.util.Arrays;
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.core.env.Environment;
import org.springframework.core.env.Profiles;
import com.feifanmaster.xtool.constant.ProfileConstant;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Aspect
public class LoggingAspect {
private final Environment env;
public LoggingAspect(Environment env) {
this.env = env;
}
@Pointcut("within(com.feifanmaster.xtool.service..*)" + " || within(com.feifanmaster.xtool.controller..*)")
public void applicationPackagePointcut() {}
@AfterThrowing(pointcut = "applicationPackagePointcut()", throwing = "e")
public void logAfterThrowing(JoinPoint joinPoint, Throwable e) {
if (env.acceptsProfiles(Profiles.of(ProfileConstant.DEVELOPMENT))) {
log.error("Exception in {}.{}() with cause = \'{}\' and errors = \'{}\'",
joinPoint.getSignature().getDeclaringTypeName(), joinPoint.getSignature().getName(),
e.getCause() != null ? e.getCause() : "NULL", e.getMessage(), e);
} else {
log.error("Exception in {}.{}() with cause = {}", joinPoint.getSignature().getDeclaringTypeName(),
joinPoint.getSignature().getName(), e.getCause() != null ? e.getCause() : "NULL");
}
}
@Around("applicationPackagePointcut()")
public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable {
if (log.isDebugEnabled()) {
log.debug("Enter: {}.{}() with argument[s] = {}", joinPoint.getSignature().getDeclaringTypeName(),
joinPoint.getSignature().getName(), Arrays.toString(joinPoint.getArgs()));
}
try {
Object result = joinPoint.proceed();
if (log.isDebugEnabled()) {
log.debug("Exit: {}.{}() with result = {}", joinPoint.getSignature().getDeclaringTypeName(),
joinPoint.getSignature().getName(), result);
}
return result;
} catch (IllegalArgumentException e) {
log.error("Illegal argument: {} in {}.{}()", Arrays.toString(joinPoint.getArgs()),
joinPoint.getSignature().getDeclaringTypeName(), joinPoint.getSignature().getName());
throw e;
}
}
}
jackiendsc
- 粉丝: 1529
- 资源: 161
最新资源
- pandas&openpyxl.whl.zip
- COMSOL三维非均质储层的水驱油模型,适用于油藏注水开发模拟 模型为非均质模型,利用地质统计学模拟得到储层的非均质性,加载到comsol中,表征渗透率的非均质性 物理场为达西定律,模型收敛性较好
- 机械设计硫化车间生产线(sw18可编辑+工程图)非常好的设计图纸100%好用.zip
- 磁链观测器(仿真+闭环代码+参考文档) 1.仿真采用simulink搭建,2018b版本 2.代码采用Keil软件编译,思路参考vesc中使用的方法,自己编写的代码能够实现0速闭环启动,并且标注有大量
- 2024照妖镜源码新增QQ面对面红包模板+更新监控
- 机械设计切鱼切菜机sw15可编辑非常好的设计图纸100%好用.zip
- 质子交膜燃料电池(PEMFC Simulink模型) (1)仿真内容:包括燃料电池静态模型、燃料电池动态模型 ①静态模型:可以得到燃料电池的极化曲线,并可计算输出电压、输出功率、效率、产热量、产水量、
- Apifox下载,版本2.3.25
- 机械设计汽车座椅手动滑轨锁夹器组装机step非常好的设计图纸100%好用.zip
- 财务成本模型.pptx
- 智能化水电厂介绍(23页 ).ppt
- 客户价值RFM模型报告.pptx
- 华为车联网解决方案.pptx
- 客户生命周期及价值(28页).pptx
- 企业数字化转型的内涵及云策略(33页).pptx
- 没业绩如何写年终总结.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈