我想记录到文件并在属性文件中设置它,因为默认的logger.info()输出进入控制台,而在Web应用程序中我的情况下没有控制台。
答案 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
按照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
。