|
|
|
@ -1,6 +1,7 @@
|
|
|
|
|
package com.chinaunicom.mall.ebtp.common.log.service.impl;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
|
import cn.hutool.core.exceptions.ExceptionUtil;
|
|
|
|
|
import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser;
|
|
|
|
|
import com.chinaunicom.mall.ebtp.common.base.service.IBaseCacheUserService;
|
|
|
|
|
import com.chinaunicom.mall.ebtp.common.constant.CommonConstants;
|
|
|
|
@ -12,10 +13,13 @@ import com.chinaunicom.mall.ebtp.common.log.service.OperationLogService;
|
|
|
|
|
import com.chinaunicom.mall.ebtp.common.util.HttpContextUtils;
|
|
|
|
|
import com.chinaunicom.mall.ebtp.common.util.JsonUtils;
|
|
|
|
|
import com.chinaunicom.mall.ebtp.common.util.PropertyUtils;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.slf4j.MDC;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.transaction.annotation.Propagation;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
|
import java.util.Optional;
|
|
|
|
@ -29,6 +33,8 @@ import static com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants.
|
|
|
|
|
* @author f
|
|
|
|
|
*/
|
|
|
|
|
@Service
|
|
|
|
|
@Slf4j
|
|
|
|
|
@Transactional(propagation = Propagation.NOT_SUPPORTED)
|
|
|
|
|
public class OperationLogServiceImpl implements OperationLogService {
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
@ -43,38 +49,42 @@ public class OperationLogServiceImpl implements OperationLogService {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void addOperationLog(OperationLog operationLog) {
|
|
|
|
|
if (operationLog.getMethod() == null) {
|
|
|
|
|
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
|
|
|
|
|
for (int i = 1; i < stackTrace.length; i++) {
|
|
|
|
|
StackTraceElement element = stackTrace[i];
|
|
|
|
|
if (!element.getClassName().equals(OperationLogServiceImpl.class.getName())) {
|
|
|
|
|
operationLog.setPackageName(element.getClassName());
|
|
|
|
|
operationLog.setMethod(element.getMethodName());
|
|
|
|
|
break;
|
|
|
|
|
try {
|
|
|
|
|
if (operationLog.getMethod() == null) {
|
|
|
|
|
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
|
|
|
|
|
for (int i = 1; i < stackTrace.length; i++) {
|
|
|
|
|
StackTraceElement element = stackTrace[i];
|
|
|
|
|
if (!element.getClassName().equals(OperationLogServiceImpl.class.getName())) {
|
|
|
|
|
operationLog.setPackageName(element.getClassName());
|
|
|
|
|
operationLog.setMethod(element.getMethodName());
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (operationLog.getMethod() == null) {
|
|
|
|
|
StackTraceElement element = Thread.currentThread().getStackTrace()[1];
|
|
|
|
|
operationLog.setPackageName(element.getClassName());
|
|
|
|
|
operationLog.setMethod(element.getMethodName());
|
|
|
|
|
}
|
|
|
|
|
BaseCacheUser user = cacheUserService.getCacheUser();
|
|
|
|
|
if (null != user) {
|
|
|
|
|
operationLog.setUser(user.setAuthorityList(null));
|
|
|
|
|
HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
|
|
|
|
|
if (request != null) {
|
|
|
|
|
// 提取token头信息 ;
|
|
|
|
|
operationLog.setToken(request.getHeader(AUTHORIZATION_HEADER))
|
|
|
|
|
.setUrl(request.getMethod() + "." + request.getRequestURI());
|
|
|
|
|
if (operationLog.getMethod() == null) {
|
|
|
|
|
StackTraceElement element = Thread.currentThread().getStackTrace()[1];
|
|
|
|
|
operationLog.setPackageName(element.getClassName());
|
|
|
|
|
operationLog.setMethod(element.getMethodName());
|
|
|
|
|
}
|
|
|
|
|
BaseCacheUser user = cacheUserService.getCacheUser();
|
|
|
|
|
if (null != user) {
|
|
|
|
|
operationLog.setUser(user.setAuthorityList(null));
|
|
|
|
|
HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
|
|
|
|
|
if (request != null) {
|
|
|
|
|
// 提取token头信息 ;
|
|
|
|
|
operationLog.setToken(request.getHeader(AUTHORIZATION_HEADER))
|
|
|
|
|
.setUrl(request.getMethod() + "." + request.getRequestURI());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
operationLog.setId(PropertyUtils.getSnowflakeId())
|
|
|
|
|
.setTransactionId(Optional.ofNullable(operationLog.getTransactionId()).orElseGet(() -> MDC.get(CommonConstants.TRANSACTION_ID)))
|
|
|
|
|
.setServiceName(serviceName);
|
|
|
|
|
kafkaProducer.send(JsonUtils.objectToJson(operationLog));
|
|
|
|
|
operationLog.setId(PropertyUtils.getSnowflakeId())
|
|
|
|
|
.setTransactionId(Optional.ofNullable(operationLog.getTransactionId()).orElseGet(() -> MDC.get(CommonConstants.TRANSACTION_ID)))
|
|
|
|
|
.setServiceName(serviceName);
|
|
|
|
|
kafkaProducer.send(JsonUtils.objectToJson(operationLog));
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
log.info(ExceptionUtil.stacktraceToString(e));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|