3

我需要获取在 logging.properties 中配置的 catalina.out 文件的路径。

有没有办法在不知道属性文件路径的情况下通过 java 检索属性“1catalina.org.apache.juli.FileHandler.directory”?

4

2 回答 2

3

如果我对您的理解正确,那么您想读取 Tomcatlogging.properties文件的属性。正如您在Tomcat FAQ for Logging中看到的,java.util.logging.config.file用于定义属性文件的路径。

然后,您可以通过Java System Properties检索此路径:

String pathLogProps = System.getProperty("java.util.logging.config.file");
Properties properties = new Properties();
try {
     properties.load(new FileInputStream(pathLogProps));
     System.out.println(prop.getProperty("database"));
} catch (IOException ex) {
     ex.printStackTrace();
}

如果未设置,我将遵循Apache Tomcat 7 Logging Documentation中的提示:

JULI 默认启用,除了常规的全局 java.util.logging 配置外,还支持每个类加载器配置。这意味着可以在以下层配置日志记录:

  • 在全球范围内。这通常在${catalina.base}/conf/logging.properties文件中完成。该文件由启动脚本设置的 java.util.logging.config.file 系统属性指定。
  • 如果不可读或未配置,则默认使用${java.home}/lib/logging.propertiesJRE 中的文件。在网络应用程序中。该文件将是WEB-INF/classes/logging.properties

默认情况下,logging.properties文件的路径应catalina.base分别在环境变量中可用CATALINA_BASE

于 2012-08-02T09:01:52.283 回答
0

该文件catalina.out既没有在任何系统属性中指定,也没有在logging.properties看看,它不存在)中指定。

相反,catalina.out它是由启动脚本的基于 shell 的输出重定向从内部bin/catalina.sh(或bin/catalina.bat)创建的。这意味着该文件仅在您使用这些脚本或模拟此行为的脚本启动 Tomcat 时可用。例如,如果您jsvc在 *NIX 平台或 Tomcat Windows 服务上使用,则logs/catalina.out不会创建该文件(至少默认情况下不会)。

如果你想看看文件是否存在,你可以打赌它在$CATALINA_BASE/logs/catalina.out. Tomcat 的最新版本定义了catalina.base系统属性,因此您可以轻松查看如下所示:

File catalinaOut = new File(System.getProperty("catalina.base"), "logs/catalina.out");
if(catalinaOut.exists())
{
    // Do whatever you want
}
于 2012-08-02T15:03:30.437 回答