Appearance
日志扩展 ¶
TIP
推荐请先阅读一下日志收集的文档。
功能 ¶
- 覆盖重写
SLF4J
的MDC
,引入TTl,使其支持简单轻量的链路追踪功能 - 提供默认的
logback.xml
配置文档,提供默认的控制台输出和ELK日志收集的配置 - 支持敏感数据脱敏功能,见
SensitiveDataLogConverter
链路追踪 ¶
当url请求处理过程中出现异常后,会以ErrorResult
格式进行返回,此时会携带链路追踪ID trackId
,可以通过它进行查询对应的方法链,具体格式可参考下面的响应参数:
json
{
"msg":"未登录",
"code":10004,
"data":null,
"traceId":"npcmxitj7m4e"
}
数据脱敏 ¶
TIP
敏感数据脱敏使用需要在 Logback
xml配置文件中配置对应的转换规则,否则脱敏处理不生效, 可以通过导入<include resource="cn/bootx/common/log/logback-sensitive.xml"/>
来引入脱敏的日志配置。
xml
<!-- 敏感数据脱敏 -->
<xml>
<!-- msg、message是要进行脱敏的字段,这写字段的来源为 logback 提供 -->
<conversionRule conversionWord="msg" converterClass="cn.bootx.common.log.SensitiveDataLogConverter"/>
<conversionRule conversionWord="message" converterClass="cn.bootx.common.log.SensitiveDataLogConverter"/>
</xml>
对SensitiveDataLogConverter
类的静态代码块进行修改,添加对应的过滤规则,见下图 敏感信息配置 块代码
java
public class SensitiveDataLogConverter extends MessageConverter {
// 过滤规则
private static final Map<String, String> REPLACE_RULES = new HashMap<>();
// 敏感信息配置
static {
// ....
REPLACE_RULES.put("(\"cardSecurity[\\\\]*\"[\\s+]*:[\\s+]*[\\\\]*\")(.*?)([\\\\]*\")","$1****$3");
REPLACE_RULES.put("(\"cvv[\\\\]*\"[\\s+]*:[\\s+]*[\\\\]*\")(.*?)([\\\\]*\")","$1****$3");
REPLACE_RULES.put("(\"cardCode[\\\\]*\"[\\s+]*:[\\s+]*[\\\\]*\")(.*?)([\\\\]*\")","$1****$3");
}
@Override
public String convert(ILoggingEvent event) {
return convert(event.getFormattedMessage());
}
/**
* 过滤敏感信息
*/
private static String convert(String msg) {
// ...
}
}