运行Ant时,Log4j2输出正确地转到File Mylog.log但控制台上没有显示任何内容。我在build.xml或log4j2.xml中缺少什么? 版本:log4j2 2.0,Ant 4.11 但是当使用Eclipse作为Junit运行时,会成功地将Log4j2输出显示到控制台和文件日志。
In the Log4j2.xml, both Appenders to Console and File have been created.
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="All">
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT" >
<PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
</Console>
<File name="FileLogger" fileName="MyLog.log" append="false">
<PatternLayout pattern="%d %t %-5p %c{2} - %m%n"/>
</File>
</Appenders>
<Loggers>
<Logger name="com.site" level="All" />
<Root >
<AppenderRef ref="STDOUT" level="All"/>
<AppenderRef ref="FileLogger" level="All"/>
</Root>
</Loggers>
</Configuration>
在build.xml中,我已经在&#34; junit&#34;的类路径中包含了log4j2.xml的路径。目标
<target name="junit">
<classpath>
<path refid="log4j2_config"/>
在测试类中,包含了getLogger。 private static final Logger log4j = LogManager.getLogger(&#34; com.site&#34;);
答案 0 :(得分:0)
在您的配置中,名称为&#34; com.site&#34;的记录器没有appender-ref。因此记录器不会执行任何操作并且可以将其删除。您的根记录器将处理所有事件,因此没问题。
我怀疑使用Ant和Eclipse运行JUnit测试之间的区别是类路径问题。尝试在<path refid="/full/path/to/log4j2_config"/>
中指定完整的绝对路径,看看是否有任何区别。
您还可以使用系统属性指定配置文件的位置: http://logging.apache.org/log4j/2.x/faq.html#config_location