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

问题描述:

我需要获取在logging.properties中配置的catalina.out文件的路径。如何在java程序中检索catalina.out的路径?

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

如果我已经正确理解了你,那么你想读取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

巨力是默认启用的,并且每个支持classloader 配置,除了常规的全局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

+0

好办法,但我不明白的财产“java.util.logging.config.file” - 我只是收到零... – reini122 2012-08-02 09:17:02

+0

@ reini122我已经添加了另一段。如果系统变量没有设置,它应该至少在Java或Catalina环境变量上可用。 – 2012-08-02 09:44:58

+0

非常感谢,通过catalina.base阅读logging.properties! – reini122 2012-08-02 12:27:45

文件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 
} 
+0

感谢您的建议,这正是我现在所做的。我正在通过catalina读出路径。基地和“猜测”该文件在那里。如果不是我不能做任何事情,但通常它在那里。 – reini122 2012-08-03 06:12:54