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

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

正如Navi所说……它在src/main/resources

只是为了澄清这个主题…… logging.properties 必须放在WEB-INF/classes目录中。 如果您使用某种框架来组织项目,您必须找到放置文件的位置以便保留在WEB-INF/classes如果您使用maven来组织Web应用程序,您必须知道所有的谎言在src/main/resources转到WEB-INF/classes.

你应该放入src / main / resources

这是我在尝试确定我的logging.properties文件在测试时需要去哪里时找到的第一个地方。

TL; DRsrc/test/resources

部署到Tomcat

当作为Web应用程序运行时,正如此注释所示,我不需要将logging.properties文件部署到src/main/resources (尽管这可能会解决我的直接问题)。 我的容器已经有一个。 对于Tomcat,该位置是$CATALINA_HOME/conf/logging.properties 。 如果从Eclipse运行Tomcat,则可以在启动配置中设置它,如此处所述。

这个答案讨论了为每个应用程序设置不同的日志记录属性,这是将文件放在src/main/resources中的内容。

这部分是海报问题的答案。 其余部分是我类似但不同问题的答案。

调试测试

我遇到的实际问题是我的java.util.logging在我的项目中添加了一个使用SLF4J的jar并且正在尝试调试我的unit testing之后停止显示类名和方法名。 我必须将org.slf4j:slf4j-jdk14添加到我提供的范围内的POM中,以便我的测试可以运行。 但后来他们没有类和方法名称。 在添加一些Surefire配置后,配置logging.properties文件以匹配Tomcat,但修复了不同的处理程序 :

   maven-surefire-plugin    java.util.logging.config.file src/test/resources/logging.properties   java.util.logging.manager org.apache.juli.ClassLoaderLogManager      

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

概要

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

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