我想记录到文件并将其设置在属性文件中,因为默认的 logger.info() 输出进入控制台,而在 Web 应用程序中,在我的情况下没有控制台。
4 回答
正如 Navi 所说......它进入 src/main/resources
只是为了澄清这个主题...... logging.properties必须进入WEB-INF/classes
目录。WEB-INF/classes
如果您使用某种框架来组织您的项目,src/main/resources
则必须找出文件的放置位置才能留在WEB-INF/classes.
你应该把 src/main/resources
这是我在试图找出测试时 logging.properties 文件需要去哪里时发现的第一个地方。
TL;博士: src/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 添加到我的项目并尝试调试我的单元测试后,我停止显示类名和方法名。我必须在提供的范围内添加org.slf4j:slf4j-jdk14
到我的 POM 中,这样我的测试才能运行。但是他们没有类和方法名。配置 logging.properties 文件以匹配 Tomcat 的文件,但在我添加了一些Surefire 配置后,使用不同的处理程序修复了该问题:
<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,因此我将其切换为使用不同的处理程序。
如果您使用的是 Tomcat,那么您应该登录到$CATALINA_HOME/logs/myapp/myapp.log
.