今天遇到一个奇葩问题
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<conversionRule conversionWord="msg" converterClass="com.guohuai.basic.component.logback.SensitiveDataConverter"> </conversionRule>
我配置了一个<conversionRule>,必须配在configuration下首位,配置在末尾就不生效。
最后debug发现当配置在首位时在PatternLayout类中,convert链就有我定义的convert--SensitiveDataConverter。
而配置在末尾时,convert链就不会加载我的convert
然后我去看head的初始化,发现我定义的rule是在PatternLayoutBase.getEffectiveConverterMap()中加载的
其实这里原因就出来了,如果<conversionRule>配置在<appender>后面的话,在构建appender时content还没加载到conversionRule,自然content里面取不到rule,就是一个加载顺序问题。