可以的,Java 的 Logger(无论是 JUL、Log4j2 还是 Logback)本身不会自动脱敏,但都可以通过配置或扩展实现日志脱敏。下面按常见方案给你说明。
✅ 支持脱敏(需自定义)
常见做法:
ConverterPatternLayout + 正则替换示例:自定义脱敏 Converter
public class MaskConverter extends ClassicConverter {
@Override
public String convert(ILoggingEvent event) {
String msg = event.getFormattedMessage();
return msg.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
}
}
logback.xml:
<conversionRule conversionWord="mask"
converterClass="com.xxx.MaskConverter"/>
<encoder>
<pattern>%d %mask%msg%n</pattern>
</encoder>
✅ 原生支持脱敏(推荐)
Log4j2 提供:
Rewrite 策略PatternLayout + replaceMasking 插件(2.17+ 更完善)示例:正则脱敏
<PatternLayout pattern="%m">
<Replace regex="(\d{3})\d{4}(\d{4})"
replacement="$1****$2"/>
</Pattern>
或使用 RewriteAppender 做统一脱敏。
⚠️ 原生不支持,需自己封装
一般做法:
log() 前脱敏public void info(String msg) {
super.info(mask(msg));
}
✅ 不要依赖业务代码手动脱敏 ✅ 统一在日志层处理
推荐方案:
| 场景 | 推荐 |
|---|---|
| 新项目 | Log4j2 |
| 老项目 | Logback + Converter |
| 敏感字段多 | 统一 Mask 工具 + Appender |
toString()如果你愿意,可以告诉我:
我可以直接给你完整可用代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。