日志脱敏
This commit is contained in:
@@ -28,7 +28,7 @@ public class OrionDesensitizeAutoConfiguration {
|
|||||||
*/
|
*/
|
||||||
@Bean
|
@Bean
|
||||||
@ConditionalOnBean(FastJsonHttpMessageConverter.class)
|
@ConditionalOnBean(FastJsonHttpMessageConverter.class)
|
||||||
public DesensitizeValueSerializeFilter desensitizeResultHandler(FastJsonHttpMessageConverter converter) {
|
public DesensitizeValueSerializeFilter desensitizeValueSerializeFilter(FastJsonHttpMessageConverter converter) {
|
||||||
DesensitizeValueSerializeFilter desensitizeFilter = new DesensitizeValueSerializeFilter();
|
DesensitizeValueSerializeFilter desensitizeFilter = new DesensitizeValueSerializeFilter();
|
||||||
// 获取 json 配置
|
// 获取 json 配置
|
||||||
FastJsonConfig config = converter.getFastJsonConfig();
|
FastJsonConfig config = converter.getFastJsonConfig();
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ public class OrionLogPrinterConfiguration {
|
|||||||
* @param config config
|
* @param config config
|
||||||
* @return 美化日志打印器
|
* @return 美化日志打印器
|
||||||
*/
|
*/
|
||||||
@Bean
|
@Bean(initMethod = "init")
|
||||||
@ConditionalOnProperty(value = "logging.printer.mode", havingValue = "pretty")
|
@ConditionalOnProperty(value = "logging.printer.mode", havingValue = "pretty")
|
||||||
public LogPrinterInterceptor prettyPrinter(LogPrinterConfig config) {
|
public LogPrinterInterceptor prettyPrinter(LogPrinterConfig config) {
|
||||||
return new PrettyLogPrinterInterceptor(config);
|
return new PrettyLogPrinterInterceptor(config);
|
||||||
@@ -38,7 +38,7 @@ public class OrionLogPrinterConfiguration {
|
|||||||
* @param config config
|
* @param config config
|
||||||
* @return 单行日志打印器
|
* @return 单行日志打印器
|
||||||
*/
|
*/
|
||||||
@Bean
|
@Bean(initMethod = "init")
|
||||||
@ConditionalOnProperty(value = "logging.printer.mode", havingValue = "row")
|
@ConditionalOnProperty(value = "logging.printer.mode", havingValue = "row")
|
||||||
public LogPrinterInterceptor rowPrinter(LogPrinterConfig config) {
|
public LogPrinterInterceptor rowPrinter(LogPrinterConfig config) {
|
||||||
return new RowLogPrinterInterceptor(config);
|
return new RowLogPrinterInterceptor(config);
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import com.alibaba.fastjson.serializer.PropertyFilter;
|
|||||||
import com.alibaba.fastjson.serializer.SerializeFilter;
|
import com.alibaba.fastjson.serializer.SerializeFilter;
|
||||||
import com.alibaba.fastjson.serializer.ValueFilter;
|
import com.alibaba.fastjson.serializer.ValueFilter;
|
||||||
import com.orion.lang.utils.Objects1;
|
import com.orion.lang.utils.Objects1;
|
||||||
|
import com.orion.lang.utils.collect.Lists;
|
||||||
import com.orion.lang.utils.collect.Maps;
|
import com.orion.lang.utils.collect.Maps;
|
||||||
import com.orion.lang.utils.reflect.Annotations;
|
import com.orion.lang.utils.reflect.Annotations;
|
||||||
import com.orion.lang.utils.reflect.Classes;
|
import com.orion.lang.utils.reflect.Classes;
|
||||||
@@ -16,12 +17,15 @@ import com.orion.ops.framework.common.utils.Desensitizes;
|
|||||||
import com.orion.ops.framework.log.core.config.LogPrinterConfig;
|
import com.orion.ops.framework.log.core.config.LogPrinterConfig;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import org.aopalliance.intercept.MethodInvocation;
|
import org.aopalliance.intercept.MethodInvocation;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
|
||||||
import javax.servlet.ServletRequest;
|
import javax.servlet.ServletRequest;
|
||||||
import javax.servlet.ServletResponse;
|
import javax.servlet.ServletResponse;
|
||||||
import java.lang.annotation.Annotation;
|
import java.lang.annotation.Annotation;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
@@ -34,10 +38,6 @@ import java.util.function.Predicate;
|
|||||||
*/
|
*/
|
||||||
public abstract class BaseLogPrinterInterceptor implements LogPrinterInterceptor {
|
public abstract class BaseLogPrinterInterceptor implements LogPrinterInterceptor {
|
||||||
|
|
||||||
private static final String EMPTY_ARG = "<EMPTY>";
|
|
||||||
|
|
||||||
private static final String ERROR_ARG = "<ERROR>";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 请求头过滤器
|
* 请求头过滤器
|
||||||
*/
|
*/
|
||||||
@@ -46,7 +46,12 @@ public abstract class BaseLogPrinterInterceptor implements LogPrinterInterceptor
|
|||||||
/**
|
/**
|
||||||
* 字段过滤器
|
* 字段过滤器
|
||||||
*/
|
*/
|
||||||
protected SerializeFilter[] fieldFilter;
|
protected SerializeFilter[] fieldFilters;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 脱敏配置
|
||||||
|
*/
|
||||||
|
private final LogPrinterConfig config;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* api 描述
|
* api 描述
|
||||||
@@ -58,20 +63,23 @@ public abstract class BaseLogPrinterInterceptor implements LogPrinterInterceptor
|
|||||||
*/
|
*/
|
||||||
private final Map<String, boolean[]> ignoreParameter;
|
private final Map<String, boolean[]> ignoreParameter;
|
||||||
|
|
||||||
|
@SuppressWarnings("ALL")
|
||||||
|
@Autowired(required = false)
|
||||||
|
@Qualifier("desensitizeValueSerializeFilter")
|
||||||
|
private ValueFilter desensitizeValueSerializeFilter;
|
||||||
|
|
||||||
public BaseLogPrinterInterceptor(LogPrinterConfig config) {
|
public BaseLogPrinterInterceptor(LogPrinterConfig config) {
|
||||||
|
this.config = config;
|
||||||
this.summaryMapping = Maps.newMap();
|
this.summaryMapping = Maps.newMap();
|
||||||
this.ignoreParameter = Maps.newMap();
|
this.ignoreParameter = Maps.newMap();
|
||||||
this.init(config);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 初始化
|
public void init() {
|
||||||
*
|
|
||||||
* @param config config
|
|
||||||
*/
|
|
||||||
protected void init(LogPrinterConfig config) {
|
|
||||||
// 请求头过滤器
|
// 请求头过滤器
|
||||||
this.headerFilter = header -> config.getHeaders().contains(header);
|
this.headerFilter = header -> config.getHeaders().contains(header);
|
||||||
|
// 字段过滤器
|
||||||
|
List<SerializeFilter> fieldFilterList = Lists.newList();
|
||||||
// 忽略字段过滤器
|
// 忽略字段过滤器
|
||||||
PropertyFilter ignoreFilter = (Object object, String name, Object value) -> !config.getField().getIgnore().contains(name);
|
PropertyFilter ignoreFilter = (Object object, String name, Object value) -> !config.getField().getIgnore().contains(name);
|
||||||
// 脱敏字段过滤器
|
// 脱敏字段过滤器
|
||||||
@@ -82,7 +90,13 @@ public abstract class BaseLogPrinterInterceptor implements LogPrinterInterceptor
|
|||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
this.fieldFilter = new SerializeFilter[]{ignoreFilter, desensitizeFilter};
|
fieldFilterList.add(ignoreFilter);
|
||||||
|
fieldFilterList.add(desensitizeFilter);
|
||||||
|
// 注解脱敏 未引入
|
||||||
|
if (desensitizeValueSerializeFilter != null) {
|
||||||
|
fieldFilterList.add(desensitizeValueSerializeFilter);
|
||||||
|
}
|
||||||
|
this.fieldFilters = fieldFilterList.toArray(new SerializeFilter[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -182,7 +196,7 @@ public abstract class BaseLogPrinterInterceptor implements LogPrinterInterceptor
|
|||||||
return EMPTY_ARG;
|
return EMPTY_ARG;
|
||||||
} else if (printCount == 1) {
|
} else if (printCount == 1) {
|
||||||
// 单个打印参数
|
// 单个打印参数
|
||||||
return JSON.toJSONString(args[lastPrintIndex], fieldFilter);
|
return JSON.toJSONString(args[lastPrintIndex], fieldFilters);
|
||||||
} else {
|
} else {
|
||||||
// 多个打印参数
|
// 多个打印参数
|
||||||
JSONArray arr = new JSONArray();
|
JSONArray arr = new JSONArray();
|
||||||
@@ -191,7 +205,7 @@ public abstract class BaseLogPrinterInterceptor implements LogPrinterInterceptor
|
|||||||
arr.add(args[i]);
|
arr.add(args[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return JSON.toJSONString(arr, fieldFilter);
|
return JSON.toJSONString(arr, fieldFilters);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return ERROR_ARG;
|
return ERROR_ARG;
|
||||||
@@ -206,7 +220,7 @@ public abstract class BaseLogPrinterInterceptor implements LogPrinterInterceptor
|
|||||||
*/
|
*/
|
||||||
protected String responseToString(Object o) {
|
protected String responseToString(Object o) {
|
||||||
try {
|
try {
|
||||||
return JSON.toJSONString(o, fieldFilter);
|
return JSON.toJSONString(o, fieldFilters);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return ERROR_ARG;
|
return ERROR_ARG;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,4 +11,13 @@ import org.aopalliance.intercept.MethodInterceptor;
|
|||||||
*/
|
*/
|
||||||
public interface LogPrinterInterceptor extends MethodInterceptor {
|
public interface LogPrinterInterceptor extends MethodInterceptor {
|
||||||
|
|
||||||
|
String EMPTY_ARG = "<EMPTY>";
|
||||||
|
|
||||||
|
String ERROR_ARG = "<ERROR>";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化
|
||||||
|
*/
|
||||||
|
void init();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user