我需要获取在logging.properties中配置的catalina.out文件的路径。
有没有办法通过java检索属性“1catalina.org.apache.juli.FileHandler.directory”而不知道属性文件的路径?
答案 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
}