Skip to content

Commit

Permalink
perf(common/log): refine log module
Browse files Browse the repository at this point in the history
  • Loading branch information
Alice52 committed Jan 31, 2023
1 parent 716270e commit 0dcd00e
Show file tree
Hide file tree
Showing 44 changed files with 402 additions and 127 deletions.
8 changes: 4 additions & 4 deletions common-core/src/main/java/common/core/annotation/Mobile.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@
@Constraint(validatedBy = MobileDescriptor.class)
public @interface Mobile {

boolean required() default false;
boolean required() default false;

String message() default "Invalid phone number, please check again";
String message() default "Invalid phone number, please check again";

Class<?>[] groups() default {};
Class<?>[] groups() default {};

Class<? extends Payload>[] payload() default {};
Class<? extends Payload>[] payload() default {};
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.Method;
import common.core.annotation.LocalIdempotentRequest;
import common.core.util.ee.WebUtil;
import common.core.util.web.WebUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.jodah.expiringmap.ExpirationPolicy;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import common.core.annotation.LocalLimitRequest;
import common.core.constant.enums.CommonResponseEnum;
import common.core.exception.BaseException;
import common.core.util.ee.WebUtil;
import common.core.util.web.WebUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public Jackson2ObjectMapperBuilderCustomizer customizer() {
builder.featuresToEnable(SerializationFeature.WRITE_ENUMS_USING_INDEX);
builder.featuresToEnable(
DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE);
builder.modules(new JavaTimeModule());
builder.modules(new JavaTimeModule());
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,10 @@ public interface SecurityConstants {
// oauth
String OAUTH_PREFIX = PROJECT_PREFIX + ":oauth:";
String OAUTH_ACCESS_KEY_PREFIX = OAUTH_PREFIX + "access:";

String FROM = "from";
String FROM_IN = "Y";

// oauth 客户端信息
String CLIENT_DETAILS_KEY = OAUTH_PREFIX + "client:details";

String FROM = "from";
String FROM_IN = "Y";
// cache
String ADMIN_USER_DETAILS_KEY = PROJECT_PREFIX + ":admin:user_details";

Expand Down
5 changes: 5 additions & 0 deletions common-core/src/main/java/common/core/executor/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
## executors

1. KeyAffinityExecutor
2. FixedThreadPoolExecutor
3. RadicalThreadPoolExecutor
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@
@Deprecated
public class Pagination<T> {

protected List<T> records;
private Integer total;
private Integer pageCount;
private Integer currentPage;
private Integer pageSize;
protected List<T> records;
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,6 @@ public class AesUtils {

private static ObjectMapper om;

@Resource
public void setOm(ObjectMapper objectMapper) {
AesUtils.om = objectMapper;
}

public static String encryptHex(AES aes, byte[] data) {
return aes.encryptHex(data);
}
Expand Down Expand Up @@ -70,4 +65,9 @@ public static String decrypt(AES aes, InputStream data) {
public static String decrypt(AES aes, String data) {
return aes.decryptStr(data, UTF_8);
}

@Resource
public void setOm(ObjectMapper objectMapper) {
AesUtils.om = objectMapper;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ public final class AppUtil {

private static String appName;

static {
resolveAppName();
}

private AppUtil() {}

public static void resolveAppName() {
Expand Down Expand Up @@ -71,8 +75,4 @@ public static String getAppName() {
private static boolean isEmpty(String str) {
return str == null || "".equals(str);
}

static {
resolveAppName();
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package common.core.util.ee;
package common.core.util.web;

import cn.hutool.core.codec.Base64;
import cn.hutool.core.lang.Assert;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import common.core.exception.BusinessException;
import common.core.util.ee.WebUtil;
import common.core.util.web.WebUtil;
import common.core.util.security.AesUtils;
import common.encrypt.annotation.Decrypt;
import common.encrypt.aspect.DecryptAspect;
Expand Down
12 changes: 12 additions & 0 deletions common-log/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
## feature

1. anno
- @LogAnnoV2
2. request-id
- trace-id
3. sls
- enable: false
4. desensitize
- 真实情况下, 需要脱敏的数据不是很多: 可以直接 log 手动写(**不推荐**)
- XxxConverter: 不推荐(可以注解方式)
- [配置脱敏](https://github.com/liuchengyin01/LogbackDesensitization): **推荐**
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package common.annotation;
package common.logging.anno;

import common.annotation.aspect.LogAnnoAspect;
import common.logging.anno.aspect.LogAnnoAspect;

import java.lang.annotation.*;

/**
* @see LogAnnoV2
* @author zack <br>
* @create 2021-06-02 10:33 <br>
* @project custom-test <br>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
package top.hubby.openapi.annotation;
package common.logging.anno;

import top.hubby.openapi.aspect.OpenApiSignatureAspect;
import top.hubby.openapi.filter.OpenApiHttpServletFilter;
import common.logging.anno.aspect.LogAnnoV2Aspect;
import common.logging.anno.filter.LogHttpServletFilter;

import java.lang.annotation.*;

/**
* please notice if use this api, the OpenApiHttpServletFilter should be injected for read request
* body.
*
* @see OpenApiHttpServletFilter
* @see OpenApiSignatureAspect
* @see LogHttpServletFilter
* @see LogAnnoV2Aspect
* @author zack <br>
* @create 2022-04-07 17:40 <br>
* @project mc-platform <br>
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface OpenApiLog {}
public @interface LogAnnoV2 {}
Original file line number Diff line number Diff line change
@@ -1,29 +1,30 @@
package common.annotation.aspect;
package common.logging.anno.aspect;

import common.annotation.LogAnno;
import common.core.component.SpringContextHolder;
import common.event.SysLogEvent;
import common.model.vo.LogVO;
import common.utils.LogUtil;
import common.logging.anno.LogAnno;
import common.logging.anno.event.SysLogEvent;
import common.logging.anno.vo.LogVO;
import common.logging.common.LogUtil;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;

/**
* @see LogAnnoV2Aspect
* @author zack <br>
* @create 2021-06-02 10:35 <br>
* @project custom-test <br>
*/
@Deprecated
@Aspect
@Slf4j
@Deprecated
public class LogAnnoAspect {

/** https://www.cnblogs.com/liqbk/p/13497502.html */
@Around(value = "@annotation(logAnno)")
@SneakyThrows
@Around(value = "@annotation(logAnno)")
public Object around(ProceedingJoinPoint point, LogAnno logAnno) {
LogVO vo = LogUtil.doBefore(point);
Object result = point.proceed();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package top.hubby.openapi.aspect;
package common.logging.anno.aspect;

import cn.hutool.core.util.IdUtil;
import cn.hutool.json.JSONUtil;
import common.core.util.ee.WebUtil;
import common.core.util.web.WebUtil;
import common.logging.anno.LogAnnoV2;
import common.logging.anno.vo.LogVOV2;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
Expand All @@ -15,10 +16,8 @@
import org.springframework.core.annotation.Order;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import top.hubby.openapi.annotation.OpenApiLog;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;
import java.util.Optional;

/**
Expand All @@ -30,16 +29,16 @@
@Aspect
@Slf4j
@AllArgsConstructor
public class OpenApiLogAspect {
private static NamedThreadLocal<LogVO> tl = new NamedThreadLocal<>("open-api-log");
public class LogAnnoV2Aspect {
private static NamedThreadLocal<LogVOV2> tl = new NamedThreadLocal<>("open-api-log");

private static void doBefore(JoinPoint joinPoint) {
try {
ServletRequestAttributes attributes =
(ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();

LogVO optLog = new LogVO();
LogVOV2 optLog = new LogVOV2();
optLog.setReqId(IdUtil.fastUUID());
optLog.setRequestTime(System.currentTimeMillis());
optLog.setBeanName(joinPoint.getSignature().getDeclaringTypeName());
Expand All @@ -60,7 +59,7 @@ private static void doBefore(JoinPoint joinPoint) {

private static void doAfterReturning(Object result) {
try {
LogVO vo = Optional.ofNullable(tl.get()).orElseGet(() -> new LogVO());
LogVOV2 vo = Optional.ofNullable(tl.get()).orElseGet(LogVOV2::new);
Long beginTime = Optional.ofNullable(vo.getRequestTime()).orElseGet(() -> 0L);
long endTime = System.currentTimeMillis();
vo.setRequestEndTime(endTime);
Expand All @@ -74,7 +73,7 @@ private static void doAfterReturning(Object result) {
}
}

private static void logRequest(LogVO vo) {
private static void logRequest(LogVOV2 vo) {
log.info(
"\n【请求ID】: {}\n"
+ "【请求URL】: {}\n"
Expand All @@ -101,7 +100,7 @@ private static void logRequest(LogVO vo) {
vo.clearUnNecessaryField();
}

private static void logResponse(LogVO vo) {
private static void logResponse(LogVOV2 vo) {
log.info(
"\n【请求ID】: {}\n" + "【请求结束时间】:{}\n" + "【请求耗时】:{}\n" + "【请求结果】:{}\n",
vo.getReqId(),
Expand All @@ -113,13 +112,13 @@ private static void logResponse(LogVO vo) {
/**
* 切入去点拦截
*
* @see OpenApiLog
* @see LogAnnoV2
*/
@Pointcut("@annotation(openApiLog)")
public void pointCut(OpenApiLog openApiLog) {}
public void pointCut(LogAnnoV2 openApiLog) {}

@Around("pointCut(openApiLog)")
public Object doPoint(ProceedingJoinPoint point, OpenApiLog openApiLog) throws Throwable {
public Object doPoint(ProceedingJoinPoint point, LogAnnoV2 openApiLog) throws Throwable {

doBefore(point);
Object res = null;
Expand All @@ -133,35 +132,4 @@ public Object doPoint(ProceedingJoinPoint point, OpenApiLog openApiLog) throws T

return res;
}

@Data
static class LogVO {
private String reqId;

private String remoteAddr;
private String url;
private String uri;
private Object body;
private String method;
private Map<String, ?> params;
private Map<String, Object> headers;
private Object result = new Object();

private String beanName;
private String methodName;

private Long requestTime;
private Long requestEndTime;
private Long requestDuration;

public void clearUnNecessaryField() {
this.setBeanName(null);
this.setMethodName(null);
this.setRemoteAddr(null);
this.setUri(null);
this.setHeaders(null);
this.setBody(null);
this.setParams(null);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package common.annotation.aspect;
package common.logging.anno.aspect;

import common.core.component.AppContextHolder;
import common.core.constant.CommonConstants;
import common.model.vo.LogVO;
import common.utils.LogUtil;
import common.logging.anno.vo.LogVO;
import common.logging.common.LogUtil;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package common.annotation.aspect;
package common.logging.anno.aspect;

import common.model.vo.LogVO;
import common.utils.LogUtil;
import common.logging.anno.vo.LogVO;
import common.logging.common.LogUtil;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
Expand Down

0 comments on commit 0dcd00e

Please sign in to comment.