12

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

4

4 回答 4

19

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

只是为了澄清这个主题...... logging.properties必须进入WEB-INF/classes目录。WEB-INF/classes 如果您使用某种框架来组织您的项目,src/main/resources则必须找出文件的放置位置才能留在WEB-INF/classes.

于 2013-01-16T15:30:09.743 回答
11

你应该把 src/main/resources

于 2011-01-17T15:30:58.290 回答
0

这是我在试图找出测试时 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,因此我将其切换为使用不同的处理程序。

于 2018-10-13T07:51:00.460 回答
-6

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

于 2011-01-17T15:26:26.737 回答