认识log4j2 的 API
-
Filters
控制日志是否打印 -
RewritePolicy
重写日志内容 -
LogEventFactory
创建 LogEvent 工厂 -
LogEventPatternConverter
日志格式化转化工厂 -
Layout
输出格式
日志脱敏
认识上面 的 API ,日志脱敏适合在 :
-
日志创建的时候,重写 LogEventFactory 工厂,创建出来脱敏的 LogEvent。
-
日志重写阶段 RewritePolicy ,实现 RewritePolicy 重写日志,输出脱敏后的日志。
-
LogEventPatternConverter ,这个阶段也可以进行日志脱敏,但只能拿到 String。
-
重写 Layout 来脱敏日志不建议,比较复杂,很多 默认实现的 Layout 都是 final 类型,不能继承。
-
Filters 只能控制日志是否打印,不适用于日志脱敏。
日志脱敏方法
对于 String 的日志,不建议使用 正则表达式 脱敏日志,正则表达式 表达式,会消耗资源,造成系统宕机。
可利用 字符匹配算法 ,KMP , Sunday 等,匹配到关键字进行脱敏。
如实现 RewritePolicy 阶段的,可以通过 对象进行处理,反射,自定义注解等方式,
slf4j-api --> slf4j-log4j-impl --> log4j-api
AbstractLogger --> messageFactory.newMessage() --> ParameterizedMessage/SimpleMessage/ObjectMessage --> push (LogEvent)
listen event --> LogEvent --> LogEventPatternConverter --> PatternLayout --> RewritePolicy
字符匹配算法
参考:https://blog.csdn.net/qq_27680317/article/details/76408655
public class Solution {
public int strStr(String haystack, String needle