parent
abe9ca7018
commit
4056250729
|
@ -0,0 +1,128 @@
|
||||||
|
package com.dispose.controller.logging;
|
||||||
|
|
||||||
|
import com.dispose.common.ConstValue;
|
||||||
|
import com.dispose.pojo.dto.protocol.base.ProtocolReqDTO;
|
||||||
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.aspectj.lang.JoinPoint;
|
||||||
|
import org.aspectj.lang.annotation.AfterReturning;
|
||||||
|
import org.aspectj.lang.annotation.AfterThrowing;
|
||||||
|
import org.aspectj.lang.annotation.Aspect;
|
||||||
|
import org.aspectj.lang.annotation.Before;
|
||||||
|
import org.aspectj.lang.annotation.Pointcut;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.web.context.request.RequestContextHolder;
|
||||||
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The type Restful log.
|
||||||
|
*
|
||||||
|
* @author <huangxin@cmhi.chinamoblie.com>
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@Aspect
|
||||||
|
@Slf4j
|
||||||
|
public class RestfulLog {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Request map.
|
||||||
|
*/
|
||||||
|
private final HashMap<Integer, String> requestMap = new HashMap<>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Object mapper.
|
||||||
|
*/
|
||||||
|
private final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dispose project exception.
|
||||||
|
*/
|
||||||
|
@Pointcut("execution(* com.dispose.controller..*.*(..))")
|
||||||
|
public void disposeProjectException() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Restful request before.
|
||||||
|
*
|
||||||
|
* @param jp the jp
|
||||||
|
* @throws JsonProcessingException the json processing exception
|
||||||
|
*/
|
||||||
|
@Before(value = "within(com.dispose.controller.*)")
|
||||||
|
public void restfulRequestBefore(JoinPoint jp) throws JsonProcessingException {
|
||||||
|
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
|
||||||
|
|
||||||
|
if (attributes != null) {
|
||||||
|
for (Object obj : jp.getArgs()) {
|
||||||
|
if (obj instanceof ProtocolReqDTO) {
|
||||||
|
requestMap.put(attributes.hashCode(), OBJECT_MAPPER.writeValueAsString(obj));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Restful response after.
|
||||||
|
*
|
||||||
|
* @param ret the ret
|
||||||
|
* @throws JsonProcessingException the json processing exception
|
||||||
|
*/
|
||||||
|
@AfterReturning(value = "within(com.dispose.controller.*)", returning = "ret")
|
||||||
|
public void restfulResponseAfter(Object ret) throws JsonProcessingException {
|
||||||
|
|
||||||
|
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
|
||||||
|
|
||||||
|
if (attributes != null) {
|
||||||
|
HttpServletRequest request = attributes.getRequest();
|
||||||
|
String reqType = request.getMethod();
|
||||||
|
String reqPath = request.getRequestURI();
|
||||||
|
String reqIp = request.getRemoteAddr();
|
||||||
|
String reqToken = request.getHeader("Authorization");
|
||||||
|
|
||||||
|
if (reqToken != null && reqToken.length() > 0) {
|
||||||
|
reqToken = reqToken.replace(ConstValue.STRING_HTTP_AUTH_HEAD, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (requestMap.containsKey(attributes.hashCode())) {
|
||||||
|
log.debug("Interface [{}] request <{}> from {}, token = <{}>\n" +
|
||||||
|
"+++ Request: {}\n" +
|
||||||
|
"--- Response: {}",
|
||||||
|
reqType, reqPath, reqIp, reqToken, requestMap.get(attributes.hashCode()),
|
||||||
|
OBJECT_MAPPER.writeValueAsString(ret));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Restful exception.
|
||||||
|
*
|
||||||
|
* @param ex the ex
|
||||||
|
*/
|
||||||
|
@AfterThrowing(pointcut = "disposeProjectException()", throwing = "ex")
|
||||||
|
public void restfulException(Exception ex) {
|
||||||
|
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
|
||||||
|
|
||||||
|
if (attributes != null) {
|
||||||
|
HttpServletRequest request = attributes.getRequest();
|
||||||
|
String reqType = request.getMethod();
|
||||||
|
String reqPath = request.getRequestURI();
|
||||||
|
String reqIp = request.getRemoteAddr();
|
||||||
|
String reqToken = request.getHeader("Authorization");
|
||||||
|
|
||||||
|
if (reqToken != null && reqToken.length() > 0) {
|
||||||
|
reqToken = reqToken.replace(ConstValue.STRING_HTTP_AUTH_HEAD, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (requestMap.containsKey(attributes.hashCode())) {
|
||||||
|
log.debug("Interface [{}] request <{}> from {}, token = <{}>\n" +
|
||||||
|
"+++ Request: {}\n" +
|
||||||
|
"--- Response Exception: {}",
|
||||||
|
reqType, reqPath, reqIp, reqToken, requestMap.get(attributes.hashCode()), ex.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -114,12 +114,16 @@ public class RestfulInterface {
|
||||||
httpHeadMap.put(String.valueOf(Header.AUTHORIZATION), ConstValue.STRING_HTTP_AUTH_HEAD + token);
|
httpHeadMap.put(String.valueOf(Header.AUTHORIZATION), ConstValue.STRING_HTTP_AUTH_HEAD + token);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String reqJson = OBJECT_MAPPER.writeValueAsString(obj);
|
||||||
|
|
||||||
|
log.debug("PengXin request: {}, {}: {}", url, token, reqJson);
|
||||||
|
|
||||||
switch (reqType) {
|
switch (reqType) {
|
||||||
case GET:
|
case GET:
|
||||||
svrResp = getJson(url, httpHeadMap);
|
svrResp = getJson(url, httpHeadMap);
|
||||||
break;
|
break;
|
||||||
case POST:
|
case POST:
|
||||||
svrResp = postJson(url, httpHeadMap, OBJECT_MAPPER.writeValueAsString(obj));
|
svrResp = postJson(url, httpHeadMap, reqJson);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
log.error("Unknown method: {}", reqType);
|
log.error("Unknown method: {}", reqType);
|
||||||
|
@ -131,6 +135,8 @@ public class RestfulInterface {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.debug("PengXin response: {}, {}: {}", url, token, svrResp);
|
||||||
|
|
||||||
return OBJECT_MAPPER.readValue(svrResp,
|
return OBJECT_MAPPER.readValue(svrResp,
|
||||||
new TypeReference<ProtocolRespDTO<T>>() {
|
new TypeReference<ProtocolRespDTO<T>>() {
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue