Skip to content

日志扩展

TIP

推荐请先阅读一下日志收集的文档。

功能

  • 覆盖重写SLF4JMDC,引入TTl,使其支持简单轻量的链路追踪功能
  • 提供默认的 logback.xml 配置文档,提供默认的控制台输出和ELK日志收集的配置
  • 支持敏感数据脱敏功能,见SensitiveDataLogConverter

链路追踪

当url请求处理过程中出现异常后,会以ErrorResult格式进行返回,此时会携带链路追踪ID trackId,可以通过它进行查询对应的方法链,具体格式可参考下面的响应参数:

json
{
    "msg":"未登录",
    "code":10004,
    "data":null,
    "traceId":"npcmxitj7m4e"
}

数据脱敏

TIP

敏感数据脱敏使用需要在 Logbackxml配置文件中配置对应的转换规则,否则脱敏处理不生效, 可以通过导入<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) {
        // ...
    }
}
本文档内容版权属于济南易杯光年软件技术有限公司,保留所有权利