# logmask **Repository Path**: fhlm/logmask ## Basic Information - **Project Name**: logmask - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-06-05 - **Last Updated**: 2021-05-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # logmask **用于过滤日志文件敏感信息** ## logmask功能介绍 - 默认实现过滤铭感信息过滤 - 手机号信息过滤 (com.zztt.logmask.common.handle.PhoneMaskHandle) - 银行卡号过滤 (com.zztt.logmask.common.handle.BankCardMaskHandle) - 身份证号码过滤 (com.zztt.logmask.common.handle.IdCardMaskHandle) - 自定义正则过滤 - 自定义过滤方法 ## 项目使用步骤 1. 引入依赖 ```xml com.zztt logmask 1.0-SNAPSHOT ``` 2. 修改配置文件 + log4j: ``` log4j.appender.File = org.apache.log4j.RollingFileAppender ``` 替换为 ``` log4j.appender.File = com.zztt.logmask.log4j.CupdataZiconRollingFileAppenderFilter ``` 完整替换 ``` log4j.appender.File = com.zztt.logmask.log4j.CupdataZiconRollingFileAppenderFilter log4j.appender.File.maskHandlesEnabled=true #多个级别用 ,号隔开 log4j.appender.File.maskHandleSuportLevel=INFO #多个掩码处理器用 ,号隔开 按照编写的顺序进行执行 log4j.appender.File.maskHandles=com.zztt.logmask.common.handle.IdCardMaskHandle,com.zztt.logmask.common.handle.BankCardMaskHandle,com.zztt.logmask.common.handle.PhoneMaskHandle ``` + logback 必须替换标签 ```xml %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} -%msg%n ``` 替换为 ```xml %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} -%msgf%n ``` 完整替换样例 ```xml ${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log 30 %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msgf%n 10MB true INFO,DUBG com.zztt.logmask.common.handle.IdCardMaskHandle,com.zztt.logmask.common.handle.BankCardMaskHandle,com.zztt.logmask.common.handle.PhoneMaskHandle ``` 3.自定义掩码功能 实现com.zztt.logmask.common.handle.MaskHandle 接口 具体看接口注释 ```java /** * 掩码处理的接口 */ public interface MaskHandle { /** * 将字符串进行掩码处理 * @param str 将要处理的日志信息 */ void mask(StringBuilder str); /** * 是否匹配 如果匹配则可以进行掩码处理 * @param str 将要处理的字符串 * @return 返回是否匹配处理器进行处理 */ boolean match(CharSequence str); } ``` 4.添加新的正则表达式的掩码功能 继承 com.zztt.logmask.common.handle.AbstractRegExMaskHandle 抽象类 具体参考默认的实现类 ``` com.zztt.logmask.common.handle.IdCardMaskHandle com.zztt.logmask.common.handle.BankCardMaskHandle com.zztt.logmask.common.handle.PhoneMaskHandle ``` ```java /** * 手机号的掩码处理类 */ public class PhoneMaskHandle extends AbstractRegExMaskHandle { /** * 手机号的正则表达式 */ private static final String PHONE_REG_EX="((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}"; public PhoneMaskHandle(){ super(PHONE_REG_EX); } public PhoneMaskHandle(String regEx){ super(regEx); } @Override protected String maskStr(String matchStr) { return MaskType.MOBILE.mask(matchStr); } } ``` ### 配置参数详情 + 可配置参数 | 参数 | 说明 | 默认值 | | ------- | :----: | :--------: | | MaskHandlesEnabled | 是否开启掩码功能 | true| | MaskHandleSuportLevels | 支持掩码功能的日志的级别 | 所有级别| | MaskHandles | 日志掩码的处理器 | 无 |