如何在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
。
文件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
}
感谢您的建议,这正是我现在所做的。我正在通过catalina读出路径。基地和“猜测”该文件在那里。如果不是我不能做任何事情,但通常它在那里。 – reini122 2012-08-03 06:12:54
好办法,但我不明白的财产“java.util.logging.config.file” - 我只是收到零... – reini122 2012-08-02 09:17:02
@ reini122我已经添加了另一段。如果系统变量没有设置,它应该至少在Java或Catalina环境变量上可用。 – 2012-08-02 09:44:58
非常感谢,通过catalina.base阅读logging.properties! – reini122 2012-08-02 12:27:45