zoukankan      html  css  js  c++  java
  • 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;
        }
        
    }
  • 相关阅读:
    Django配置MySQL数据库教程
    给大家发个Python和Django的福利吧,不要钱的那种~~~
    Django 设置admin后台表和App(应用)为中文名
    Django 配置JWT认证方式
    威联通(NAS)应用篇:自建OwnCloud网盘(百度网盘,拜拜~~~)
    请不要浪费你的生命,一文多发推广就用它(OpenWrite)
    Django ORM 查询表中某列字段值
    【Django 2.2文档系列】Model 外键中的on_delete参数用法
    嵌入式、C语言位操作的一些技巧汇总
    【RT-Thread笔记】IO设备模型及GPIO设备
  • 原文地址:https://www.cnblogs.com/zzzzw/p/9131675.html
Copyright © 2011-2022 走看看