如果你在使用XML配置Log4j,当你在查看Apache官网时你一定会很奇怪,为什么会有两种不同的风格,分别使用了不同的元素。
<Appenders> <Appender type="Console" name="STDOUT"> <Layout type="PatternLayout" pattern="%m MDC%X%n"/> <Filters> <Filter type="MarkerFilter" marker="FLOW" onMatch="DENY" onMismatch="NEUTRAL"/> <Filter type="MarkerFilter" marker="EXCEPTION" onMatch="DENY" onMismatch="ACCEPT"/> </Filters> </Appender> <Appender type="Console" name="FLOW"> <Layout type="PatternLayout" pattern="%C{1}.%M %m %ex%n"/><!-- class and line number --> <Filters> <Filter type="MarkerFilter" marker="FLOW" onMatch="ACCEPT" onMismatch="NEUTRAL"/> <Filter type="MarkerFilter" marker="EXCEPTION" onMatch="ACCEPT" onMismatch="DENY"/> </Filters> </Appender> <Appender type="File" name="File" fileName="${filename}"> <Layout type="PatternLayout"> <Pattern>%d %p %C{1.} [%t] %m%n</Pattern> </Layout> </Appender> <Appender type="List" name="List"> </Appender> </Appenders>
与
<Appenders> <Console name="STDOUT"> <PatternLayout pattern="%m MDC%X%n"/> </Console> <Console name="FLOW"> <!-- this pattern outputs class name and line number --> <PatternLayout pattern="%C{1}.%M %m %ex%n"/> </Console> <File name="File" fileName="${filename}"> <PatternLayout> <Pattern>%d %p %C{1.} [%t] %m%n</Pattern> </PatternLayout> </File> <List name="List"> </List> </Appenders>
根据本人亲测log4j beta9版本,起作用的是后者。也就是说Appenders中不能有Appender元素,否则会看到Error日志说有无效的Appender元素。会看到两种风格可能与还处于测试版本有关,组织方面还没最后决定使用何种方式。