【问题标题】:Where should I put logging.properties file for java.util.logging in web application (maven project)?我应该将 java.util.logging 的 logging.properties 文件放在 Web 应用程序(maven 项目)中的哪里?
【发布时间】:2011-06-10 12:42:00
【问题描述】:

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

【问题讨论】:

    标签: java web-applications maven java.util.logging


    【解决方案1】:

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

    只是为了澄清这个主题...... logging.properties 必须进入WEB-INF/classes目录。 如果您正在使用某种框架来组织您的项目,您必须找出文件的放置位置才能留在WEB-INF/classes 如果你使用 maven 组织 web 应用程序,你必须知道 src/main/resources 中的所有内容都转到 WEB-INF/classes.

    【讨论】:

      【解决方案2】:

      你应该放入 src/main/resources

      【讨论】:

      • 这是该问题的正确答案,我对此表示赞同。但是,在应用程序的 .jar/.war/.ear/etc... 中包含这样的属性 文件是否是一种好习惯?应用程序不应该提供一个示例配置(或最多一个默认配置)并允许安装程序在他们的系统上配置他们喜欢的日志记录吗?我意识到这是一个开放式问题,那么公认的最佳实践是什么? (假设有一个)
      • 我应该在哪里和什么地方代替这个:java -Djava.util.logging.config.file=mylogging.properties?在tomcat 6中
      • 我看到默认情况下(没有自己的 logging.properties)tomcat6 将默认 java.util.logging log.info() 发送到文件 /var/log/tomcat6/catalina-(date)-.log现在这对我来说已经足够了,以后我会读这个tomcat.apache.org/tomcat-6.0-doc/…
      • AFAIK 不会从类路径中读取 logging.properties 文件,因此仅将其放入 src/main/resources 是行不通的。
      【解决方案3】:

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

      TL;DRsrc/test/resources

      部署到 Tomcat

      当作为 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,因此我将其切换为使用不同的处理程序。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 这不能回答问题。
        • @the-elite-gentleman 我会让 OP 来判断。据我所知,OP 想知道在哪里登录,因为他无法登录到 web 应用程序中的控制台。如果我误解了这个问题,我会很乐意删除/编辑。
        猜你喜欢
        • 2010-10-02
        • 2011-04-06
        • 1970-01-01
        • 2016-03-30
        • 2019-04-10
        • 2010-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多