2016-03-07 14 views
0

在使用Log4J的项目上使用gradle run时,我看到以下错误。如何在使用`gradle run`时使用应用程序根的log4j.properties`

log4j:WARN No appenders could be found for logger (gma.api.GmaApi). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 

我已经能够确认这个警告是由于Log4J的不能够找到我的log4j.properties文件是在应用程序的根。为了确定这我已经设置_JAVA_OPTIONS-Dlog4j.debugsuggested here这给了我详细的调试信息到log4j.properties的解决方案。我通过将log4j.properties文件放入更传统的src/main/resources目录中来证实了这一点,该目录使这些警告消失,并且还导致了预期的日志输出。

我想是保持log4j.properties在应用程序根目录,并把它拾起Log4J的。我对如何做到这一点的理解是将其添加到“classpath”中,但我不知道如何从我的project.gradle文件中执行此操作,以便在使用gradle Run task时可以找到它。

回答

0

经过文档和各种论坛帖子的绊脚石之后,我得到了source set的概念,这似乎对您的资源所在的Gradle教学有用。由于我的兴趣只包括一个文件log4j.properties我还需要the advice关于如何通过过滤器实现这一点,以便我的整个应用程序根目录不会成为源应用程序资源。

sourceSets { 
    main { 
     java { 
      srcDir 'src' 
     } 
     // Used to pick up log4j.properties resource at the root of the applicatoin directory 
     resources { 
      srcDir '.' 
      include 'log4j.properties' 
     } 
    } 
} 

有可能是解决这一问题的其他也许更有效的方法,但是这是第一个,我发现对我的作品。

相关问题