LoggerAspect

package nc.oss.utils;

import java.util.Date;

import nc.bs.framework.common.InvocationInfoProxy;
import nc.bs.framework.server.ServerConfiguration;
import nc.md.model.MetaDataException;
import nc.md.persist.framework.MDPersistenceService;
import nc.oss.common.OSSConst;
import nc.vo.oss.log.AggLogVO;
import nc.vo.oss.log.LogDetailVO;
import nc.vo.oss.log.LogVO;
import nc.vo.pub.VOStatus;
import nc.vo.pub.lang.UFDateTime;

import org.apache.commons.lang.StringUtils;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

/**
 * 日志切面类
 * 
 *
 */
public class LoggerAspect {
    
    /**
     * 记录日志
     * @param serviceName 调用服务接口名
     * @param msgObj 服务返回日志
     */
    public static void saveLogger(String serviceName, JSONObject msgObj) {
        if (!StringUtils.isEmpty(serviceName) && msgObj != null) {
            AggLogVO aggVO = new AggLogVO();
            LogVO logVO = new LogVO();
            aggVO.setParentVO(logVO);
            UFDateTime creationtime = new UFDateTime(new Date());
            JSONObject retMsgContent = msgObj.getJSONObject(OSSConst.RETURN_MSG);
            String serverAddr = InvocationInfoProxy.getInstance().getCallServer();
            serverAddr = ServerConfiguration.getServerConfiguration().getServerName();
            
            logVO.setPk_service(serviceName);
            logVO.setService_name(serviceName);
            logVO.setServer_addr(serverAddr); // 服务器地址
            logVO.setRun_status(msgObj.getIntValue(OSSConst.STATUS));
            logVO.setLog_msg(retMsgContent.getString(OSSConst.MSG_SUMMARY)); // 消息摘要
            logVO.setExt_system(msgObj.getString(OSSConst.EXT_SYSTEM)); // 外部系统
            logVO.setBill_type(msgObj.getString(OSSConst.BILL_TYPE));   // 单据类型
            logVO.setCreationtime(creationtime);
            // 构造日志明细VO
            aggVO.setChildrenVO(createLogDetails(serviceName, retMsgContent));
            
            try {
                logVO.setStatus(VOStatus.NEW);
                MDPersistenceService.lookupPersistenceService().saveBill(aggVO);
            } catch (MetaDataException e) {
                e.printStackTrace();
            }
        }
    }
    
    private static LogDetailVO[] createLogDetails(String serviceName, JSONObject msgContent) {
        LogDetailVO[] detailVOs = null;
        JSONArray msgDetails = msgContent.getJSONArray(OSSConst.MSG_CONTENT);
        if (msgDetails != null && msgDetails.size()>0) {
            int count = msgDetails.size();
            detailVOs = new LogDetailVO[count];
            for (int i=0; i<count; i++) {
                LogDetailVO detailVO = new LogDetailVO();
                JSONObject jsonMsgDetail = msgDetails.getJSONObject(i);
                
                detailVO.setPk_business(jsonMsgDetail.getString(OSSConst.BILL_PK)); // 单据PK
                detailVO.setPk_business_ext(jsonMsgDetail.getString(OSSConst.SRC_BILL_PK)); // 来源单据PK
                detailVO.setPk_service(serviceName);
                detailVO.setRun_status(jsonMsgDetail.getIntValue(OSSConst.STATUS));
                detailVO.setLog_msg(jsonMsgDetail.getString(OSSConst.MSG_DETAIL_DESC));
                detailVO.setCreationtime(new UFDateTime(new Date()));
                detailVO.setStatus(VOStatus.NEW);
                detailVOs[i] = detailVO;
            }            
        }
        return detailVOs;
    }
    
}
原文地址:https://www.cnblogs.com/zzzzw/p/9131675.html