我应该在web应用程序(maven项目)中将java.util.logging的logging.properties文件放在哪里?

时间:2011-01-17 15:21:30

标签: java web-applications maven java.util.logging

我想记录到文件并在属性文件中设置它,因为默认的logger.info()输出进入控制台,而在Web应用程序中我的情况下没有控制台。

4 个答案:

答案 0 :(得分:17)

正如Navi所说......它进入src/main/resources

只是为了澄清这个主题...... logging.properties 必须进入WEB-INF/classes目录。 如果您使用某种框架来组织项目,则必须找到放置文件的位置以便留在WEB-INF/classes 如果您使用maven来整理网络应用,则必须知道src/main/resources中的所有内容都转到WEB-INF/classes.

答案 1 :(得分:9)

你应该放入src / main / resources

答案 2 :(得分:0)

这是我尝试弄清我的logging.properties文件需要在哪里进行测试时找到的第一个地方。

TL; DR src/test/resources

部署到Tomcat

按照this comment的建议作为Web应用程序运行时,我不需要将logging.properties文件部署到src/main/resources(尽管这可能已经解决了我的紧迫问题)。我的容器已经有一个。对于Tomcat,该位置为$CATALINA_HOME/conf/logging.properties。如果您是从Eclipse运行Tomcat,则可以在启动配置中进行设置,如here所述。

This answer讨论每个应用程序设置不同的日志记录属性,这就是将文件放入src/main/resources的作用。

本部分是发布者问题的答案。剩下的就是我类似但不同的问题的答案。

调试测试

我遇到的实际问题是,在向项目添加使用SLF4J的jar并尝试调试单元测试后,java.util.logging停止显示类名和方法名。我必须在Provided范围内将org.slf4j:slf4j-jdk14添加到我的POM中,这样我的测试才能完全运行。但是那时他们没有类和方法名。配置logging.properties文件以使其与Tomcat匹配,但配置了不同的handlers,此问题在我添加了一些Surefire configuration之后得到了解决:

<plugins>
  <plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
       <systemProperties>
         <property> 
           <name>java.util.logging.config.file</name>
           <value>src/test/resources/logging.properties</value>
         </property>
         <property>
           <name>java.util.logging.manager</name>
           <value>org.apache.juli.ClassLoaderLogManager</value>
         </property>
       </systemProperties>
    </configuration>
  </plugin>
</plugins>

即使从Maven运行测试,我的日志也再次显示了所有信息。

摘要

如果要设置常规应用程序的日志记录方式,那么src/main/resources可能是正确的位置。但是我想更改测试记录的方式,所以我改用src/test/resources。由于Tomcat的启动配置不能在典型的单元测试下运行,因此我不得不在Surefire中添加一些配置以达到相同的目的。 Tomcat外部的logging.properties不使用任何Catalina jar,因此我将其切换为使用其他处理程序。

答案 3 :(得分:-5)

如果您使用的是Tomcat,则应该登录$CATALINA_HOME/logs/myapp/myapp.log