【发布时间】:2012-07-31 05:09:55
【问题描述】:
我需要获取在 logging.properties 中配置的 catalina.out 文件的路径。
有没有办法在不知道属性文件路径的情况下通过 java 检索属性“1catalina.org.apache.juli.FileHandler.directory”?
【问题讨论】:
标签: java tomcat logging tomcat6
我需要获取在 logging.properties 中配置的 catalina.out 文件的路径。
有没有办法在不知道属性文件路径的情况下通过 java 检索属性“1catalina.org.apache.juli.FileHandler.directory”?
【问题讨论】:
标签: java tomcat logging tomcat6
如果我对您的理解正确,那么您想读取 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 上可用。
【讨论】:
文件catalina.out既没有在任何系统属性中指定,也没有在logging.properties中指定(取一个look,它不存在)。
相反,catalina.out 是由启动脚本的基于 shell 的输出重定向从 bin/catalina.sh(或 bin/catalina.bat)内创建的。这意味着该文件仅在您使用这些脚本或模拟此行为的脚本启动 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
}
【讨论】: