如何在java程序中检索catalina.out的路径?

时间:2012-08-02 08:43:49

标签: java tomcat logging tomcat6

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

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

2 个答案:

答案 0 :(得分:3)

如果我理解正确,那么您想要读取Tomcat logging.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系统属性设置   启动脚本。
  •   
  • 如果无法读取或未配置,则默认使用JRE中的${java.home}/lib/logging.properties文件。在网络上   应用。该文件将为WEB-INF/classes/logging.properties
  •   

默认情况下,logging.properties文件的路径应分别通过环境变量catalina.base CATALINA_BASE提供。

答案 1 :(得分:0)

文件catalina.out既未在任何系统属性中指定,也未在logging.properties中指定(取look,但不存在)。

相反,catalina.out是由bin/catalina.sh(或bin/catalina.bat)内的启动脚本基于shell的输出重定向创建的。这意味着只有在使用这些脚本或模拟此行为的脚本启动Tomcat时,此文件才可用。例如,如果在* NIX平台或Tomcat Windows服务上使用jsvc,则不会创建文件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
}