| | |
| | | package com.java110.log.smo.impl; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.java110.common.exception.GenerateCodeException; |
| | | import com.java110.common.log.LoggerEngine; |
| | | import com.java110.common.util.Assert; |
| | | import com.java110.common.util.DateUtil; |
| | | import com.java110.core.base.smo.BaseServiceSMO; |
| | | import com.java110.core.factory.GenerateCodeFactory; |
| | | import com.java110.feign.code.ICodeApi; |
| | | import com.java110.core.smo.code.ICodeApi; |
| | | import com.java110.log.dao.LogServiceDao; |
| | | import com.java110.log.smo.ILogServiceSMO; |
| | | import org.slf4j.Logger; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.rmi.NoSuchObjectException; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | |
| | | @Transactional |
| | | public class LogServiceSMOImpl extends BaseServiceSMO implements ILogServiceSMO { |
| | | |
| | | private final static Logger logger = LoggerFactory.getLogger(LogServiceSMOImpl.class); |
| | | private static Logger logger = LoggerFactory.getLogger(LogServiceSMOImpl.class); |
| | | |
| | | @Autowired |
| | | private ICodeApi codeApi; |
| | |
| | | |
| | | /** |
| | | * 保存日志信息 |
| | | * |
| | | * @param logMessage 需要保存的日志信息 |
| | | */ |
| | | @Override |
| | | public void saveLogMessage(String logMessage) { |
| | | logger.debug("received log message : {}" ,logMessage); |
| | | logger.debug("received log message : {}", logMessage); |
| | | |
| | | try{ |
| | | try { |
| | | doSaveLogMessage(logMessage); |
| | | }catch (Exception e){ |
| | | logger.error("save log message error :",e); |
| | | } catch (Exception e) { |
| | | logger.error("save log message error :", e); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * |
| | | * @param logMessage 需要保存的日志信息 |
| | | * @throws Exception 异常信息 |
| | | */ |
| | | private void doSaveLogMessage(String logMessage) throws Exception { |
| | | |
| | |
| | | validateLogMessage(logMessageObj); |
| | | |
| | | // 调用服务生成log_id |
| | | String log_id = GenerateCodeFactory.getInnerTransactionId(); |
| | | String logId = GenerateCodeFactory.getInnerTransactionId(); |
| | | //String log_id = codeApi.generateCode("1000001"); |
| | | |
| | | // 封装日志保存参数 |
| | | Map logMessageParams= new HashMap(); |
| | | logMessageParams.put("logId",log_id); |
| | | builderLogMessageParams(logMessageParams,logMessageObj); |
| | | Map logMessageParams = new HashMap(); |
| | | logMessageParams.put("logId", logId); |
| | | builderLogMessageParams(logMessageParams, logMessageObj); |
| | | |
| | | //保存日志 |
| | | logServiceDaoImpl.saveTransactionLog(logMessageParams); |
| | |
| | | |
| | | /** |
| | | * 封装日志保存参数 |
| | | * |
| | | * @param logMessageParams 日志保存参数 |
| | | * @param logMessageObj 日志消息对象 |
| | | * @throws Exception 异常信息 |
| | | */ |
| | | private void builderLogMessageParams(Map logMessageParams,JSONObject logMessageObj) throws Exception{ |
| | | private void builderLogMessageParams(Map logMessageParams, JSONObject logMessageObj) throws Exception { |
| | | |
| | | logMessageParams.putAll(logMessageObj); |
| | | //#{requestHeader},#{responseHeader},#{requestMessage},#{responseMessage},#{remark} |
| | |
| | | JSONObject requestMessageObj = JSONObject.parseObject(requestMessage); |
| | | JSONObject responseMessageObj = JSONObject.parseObject(responseMessage); |
| | | |
| | | logMessageParams.put("requestHeader",requestMessageObj.getString("headers")); |
| | | logMessageParams.put("requestMessage",requestMessageObj.getString("body")); |
| | | logMessageParams.put("responseHeader",responseMessageObj.getString("headers")); |
| | | logMessageParams.put("responseMessage",responseMessageObj.getString("body")); |
| | | logMessageParams.put("requestHeader", requestMessageObj.getString("headers")); |
| | | logMessageParams.put("requestMessage", requestMessageObj.getString("body")); |
| | | logMessageParams.put("responseHeader", responseMessageObj.getString("headers")); |
| | | logMessageParams.put("responseMessage", responseMessageObj.getString("body")); |
| | | |
| | | logMessageParams.put("timestamp", DateUtil.getDefaultDateFromString(logMessageObj.getString("timestamp"))); |
| | | |
| | | logMessageParams.put("month",DateUtil.getCurrentMonth()); |
| | | logMessageParams.put("month", DateUtil.getCurrentMonth()); |
| | | } |
| | | |
| | | /** |
| | | * 校验 日志报文 必填节点是否存在 |
| | | * |
| | | * @param logMessageObj JSON 化的日志信息 |
| | | */ |
| | | private void validateLogMessage(JSONObject logMessageObj){ |
| | | private void validateLogMessage(JSONObject logMessageObj) { |
| | | |
| | | Assert.hasKeyAndValue(logMessageObj,"transactionId","can not find transactionId node or transactionId is null"); |
| | | Assert.hasKeyAndValue(logMessageObj, "transactionId", "can not find transactionId node or transactionId is null"); |
| | | |
| | | Assert.hasKeyAndValue(logMessageObj,"dataFlowId","can not find dataFlowId node or dataFlowId is null"); |
| | | Assert.hasKeyAndValue(logMessageObj, "dataFlowId", "can not find dataFlowId node or dataFlowId is null"); |
| | | |
| | | Assert.hasKeyAndValue(logMessageObj,"ip","can not find ip node or ip is null"); |
| | | Assert.hasKeyAndValue(logMessageObj, "ip", "can not find ip node or ip is null"); |
| | | |
| | | Assert.hasKeyAndValue(logMessageObj,"port","can not find port node or port is null"); |
| | | Assert.hasKeyAndValue(logMessageObj, "port", "can not find port node or port is null"); |
| | | |
| | | Assert.hasKeyAndValue(logMessageObj,"appId","can not find appId node or appId is null"); |
| | | Assert.hasKeyAndValue(logMessageObj, "appId", "can not find appId node or appId is null"); |
| | | |
| | | Assert.hasKeyAndValue(logMessageObj,"timestamp","can not find timestamp node or timestamp is null"); |
| | | Assert.hasKeyAndValue(logMessageObj, "timestamp", "can not find timestamp node or timestamp is null"); |
| | | |
| | | Assert.hasKeyAndValue(logMessageObj,"logStatus","can not find logStatus node or logStatus is null"); |
| | | Assert.hasKeyAndValue(logMessageObj, "logStatus", "can not find logStatus node or logStatus is null"); |
| | | |
| | | Assert.hasKey(logMessageObj,"requestMessage","can not find requestMessage node "); |
| | | Assert.hasKey(logMessageObj, "requestMessage", "can not find requestMessage node "); |
| | | |
| | | Assert.hasKey(logMessageObj,"responseMessage","can not find responseMessage node "); |
| | | Assert.hasKey(logMessageObj, "responseMessage", "can not find responseMessage node "); |
| | | } |
| | | |
| | | public ICodeApi getCodeApi() { |