Log4j2输出到File是成功的但不是使用Ant的Console

时间:2014-05-05 19:23:11

标签: ant log4j2

运行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;);

1 个答案:

答案 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