【发布时间】:2011-06-10 12:42:00
【问题描述】:
我想记录到文件并在属性文件中设置它,因为默认的 logger.info() 输出到控制台,而在 Web 应用程序中,我的情况下没有控制台。
【问题讨论】:
标签: java web-applications maven java.util.logging
我想记录到文件并在属性文件中设置它,因为默认的 logger.info() 输出到控制台,而在 Web 应用程序中,我的情况下没有控制台。
【问题讨论】:
标签: java web-applications maven java.util.logging
正如 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;DR:src/test/resources
当作为 Web 应用程序运行时,正如 this comment 所建议的那样,我不需要将 logging.properties 文件部署到 src/main/resources(尽管这可能会解决我的直接问题)。我的容器已经有一个。对于 Tomcat,该位置是 $CATALINA_HOME/conf/logging.properties。如果您从 Eclipse 运行 Tomcat,则可以在启动配置中进行设置,如 here 所述。
This answer 谈到为每个应用程序设置不同的日志记录属性,这就是将文件放入src/main/resources 所做的事情。
这部分是对发帖人问题的回答。剩下的就是我的类似但不同的问题的答案。
我遇到的实际问题是,在我将一个使用 SLF4J 的 jar 添加到我的项目并尝试调试我的单元测试后,我的 java.util.logging 停止显示类名和方法名。我必须在提供的范围内将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,因此我将其切换为使用不同的处理程序。
【讨论】:
如果您使用的是 Tomcat,那么您应该登录到$CATALINA_HOME/logs/myapp/myapp.log。
【讨论】: