log4j patternLayout为什么选择pattern-%replace的效率约为2.0

时间:2018-11-05 07:25:03

标签: java log4j

在将日志打印到文件时,项目需要避免使用敏感词, 我发现第一种方法比第二种方法快约2倍,但我不明白为什么会这样;

我发现第二种方法与第一种方法之间的唯一区别是,一个“替换”在格式化程序Object中,另一个在替换Object

请大家帮我回答这个问题; 我的英语很弱,谢谢。

        <!-- the first way -->
        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %level %l  %replace{%m}{([1][3,4,5,7,8][0-9])[0-9]{5}([0-9]{3})|([^\d][1-9]{1})(\d{18}|\d{14}[^\d])|([^\d][1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx][^\d])|([1-9]{1})(\d{18}|\d{15})|(([\u4E00-\u9FA5]+省|[\u4E00-\u9FA5]+市)([\u4E00-\u9FA5]+市|[\u4E00-\u9FA5]+区|[\u4E00-\u9FA5]+区)([\u4E00-\u9FA5]+区|[\u4E00-\u9FA5]+区)?([a-zA-Z0-9\u4E00-\u9FA5]+))|(赵|钱|孙|李|周|吴|郑|王|冯|陈|楮|卫|蒋|沈|韩|杨|朱|秦|尤|许)[\u4E00-\u9FA5]{1,3}}{****}%n " />     -->


        <!-- the second way -->
        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %level %l %m%n " >  
            <replace regex="([1][3,4,5,7,8][0-9])[0-9]{5}([0-9]{3})|([^\d][1-9]{1})(\d{18}|\d{14}[^\d])|([^\d][1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx][^\d])|([1-9]{1})(\d{18}|\d{15})|(([\u4E00-\u9FA5]+省|[\u4E00-\u9FA5]+市)([\u4E00-\u9FA5]+市|[\u4E00-\u9FA5]+区|[\u4E00-\u9FA5]+区)([\u4E00-\u9FA5]+区|[\u4E00-\u9FA5]+区)?([a-zA-Z0-9\u4E00-\u9FA5]+))|(赵|钱|孙|李|周|吴|郑|王|冯|陈|楮|卫|蒋|沈|韩|杨|朱|秦|尤|许)[\u4E00-\u9FA5]{1,3}"  replacement= "****"/>
        </PatternLayout>

0 个答案:

没有答案