项目中日志的简单记录

根据需要添加日志的方法配置方法名称

logMethod.properties

#公共日志方法配置
#key :接口方法名和入参对象   value :方法对应的模块值
createOrder_OrderInfo=4
#申请退款
applyForRefund_OrderReturnRequest=4
加载配置文件类:

public class LogMethodConstants {
private final static Logger logger = LoggerFactory.getLogger(LogMethodConstants.class);

public final  static List<String> methods =Lists.newArrayList();

    public final static Map<String,String>  map=Maps.newHashMap();

			static{

				Properties pro = new Properties();
				try {
					pro.load(LogMethodConstants.class.getResourceAsStream("/props/logMethod.properties"));
					Set<Entry<Object,Object>> entrySet = pro.entrySet();
					for (Entry<Object, Object> entry : entrySet) {
						methods.add(entry.getKey().toString().split("_")[0]);
						map.put(entry.getKey().toString().split("_")[0], entry.getValue().toString());
						methodEntrys.put(entry.getKey().toString().split("_")[0], entry.getKey().toString().split("_")[1]);
			        }
				} catch (IOException e) {
					logger.info("LogMethodConstants 异常:{}",e);
				}

			}
}

日志切面类:

@Component
@Aspect
public class CommonLogAspect {
    private final static Logger logger = LoggerFactory.getLogger(CommonLogAspect.class);

    @Resource(name="fmqLogProducer")
    private MqProducer producer;

    List<String> methods =	LogMethodConstants.methods;
    Map<String,String> map  = LogMethodConstants.map;

    private String beforeParam ="";
    @Value("${app.name}")
    private String appName;

	/**
	  *  定义一个切点public * com.jd.crowdfunding.mall.miste.service..*.*(..)
	  *
	  */

   @Pointcut("execution(public * com.jd.crowdfunding.mall.order.*.*.*(..))")
    public void pointcut(){}

    //	value = "pointcut() &&"+ "args(request,..)"
	@Before(value = "pointcut()")
	public void saveLogBefore(JoinPoint point){

		logger.info("===============before====================");
		String methodName = point.getSignature().getName();
		if(methods.contains(methodName)){
			Object[] args = point.getArgs();
			logger.info("进入before:{}",JSON.toJSONString(args));
			beforeParam = JSON.toJSONString(args);
		}

	}

	//value="pointcut() &&"+ "args(request,..)"
	@After(value="pointcut()")
	public  void  saveLogAfter(JoinPoint point){
		logger.info("================after===================");
		String methodName = point.getSignature().getName();
		String className = point.getTarget().getClass().getName();
		if(methods.contains(methodName)){
			Object[] args = point.getArgs();
			String afterParam = JSON.toJSONString(args);
			logger.info("进入after:{}",JSON.toJSONString(args));
			Integer code = Integer.valueOf(map.get(methodName));
			
			saveLog(code,beforeParam,afterParam,methodName,className);
		}
	}


    public void saveLog(Integer code,Object beforeParam,Object afterParam,String methodName,String className){
    	try {
//   HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
    		/** 保存日志,发送MQ  */
    		CallerInfo callerInfo = new CallerInfo(LogSystem.CF_MALL.getCode(),appName,code,dataId,beforeParam.toString(),afterParam.toString(),IP,className,methodName);
    		callerInfo.setOperationPin(operationPin);
    		logger.info("保存日志,发送MQ入参:{}",JSON.toJSONString(callerInfo));
    		producer.process(callerInfo);
   	} catch (Exception e) {
   		logger.info("保存日志,发送MQ异常",e);
    	}
    }
    }

这里我们采用异步发送MQ的形式记录日志,也可以调用JSF接口形式,根据不同的项目按照实际情况操作。




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值