log4j 是如何寻找appender的
配置文件节选如下,appender节点定义了日志的输出形式和输出的位置
logger则根据完整的类名,从最末端一层层循环往上寻找,直至找到root
- 情形一:"aaa.bbb.ccc.ddd.xxx.class"最终输出到file2.log
寻找name为"aaa.bbb.ccc.ddd"的logger,未匹配,则寻找父节点"aaa.bbb.ccc"对应的配置,匹配,则输出到file2.log - 情形二:"aaa.bbb.ccc.xxx.class"最终输出到file2.log
寻找name为"aaa.bbb.ccc"的logger,匹配,则输出到file2.log - 情形三:"aaa.bbb.xxx.class"调用输出到file1.log
寻找name为"aaa.bbb"的logger,未匹配,则寻找父节点"aaa"对应的配置,依然未匹配,再继续,直到root,最终输出到file2.log
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" INFO="false" threshold="null">
<appender class="handler class" name="ROLLING_FILE">
<param name="Encoding" value="UTF-8"/>
<param name="File" value="logs/file1.log"/>
……
</appender>
<appender class="handler class" name="ROLLING_FILE_SYN">
<param name="Encoding" value="UTF-8"/>
<param name="File" value="logs/file2.log"/>
……
</appender>
<logger additivity="false" name="aaa.bbb.ccc">
<level value="DEBUG"/>
<appender-ref ref="ROLLING_FILE_SYN"/>
</logger>
<root>
<level value="ERROR"/>
<appender-ref ref="ROLLING_FILE"/>
</root>
</log4j:configuration>
网友评论