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

如何在java程序中检索catalina.out的路径?,java,tomcat,logging,tomcat6,Java,Tomcat,Logging,Tomcat6,我需要获取在logging.properties中配置的catalina.out文件的路径 有没有一种方法可以在不知道属性文件路径的情况下通过java检索属性“1catalina.org.apache.juli.FileHandler.directory”?如果我理解正确,那么您需要读取Tomcatlogging.properties文件的属性。正如您在中所看到的,java.util.logging.config.file用于定义属性文件的路径 然后,您可以通过以下方式检索此路径: 如果未设置此

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


有没有一种方法可以在不知道属性文件路径的情况下通过java检索属性“1catalina.org.apache.juli.FileHandler.directory”?

如果我理解正确,那么您需要读取Tomcat
logging.properties
文件的属性。正如您在中所看到的,
java.util.logging.config.file
用于定义属性文件的路径

然后,您可以通过以下方式检索此路径:

如果未设置此选项,我将遵循以下提示:

默认情况下启用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
(举个例子,它不在那里)

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

很好的方法,但是我没有得到属性“java.util.logging.config.file”-我刚刚收到null…@reini122我添加了另一个段落。如果没有设置系统变量,它至少应该可以通过Java或Catalina环境变量使用。非常感谢,通过Catalina.base读取logging.properties非常有效!感谢您的建议,这正是我现在正在做的。我正在通过Catalina读取路径.base和“猜测”文件在那里。如果没有,我什么也做不了,但通常它在那里。
File catalinaOut = new File(System.getProperty("catalina.base"), "logs/catalina.out");
if(catalinaOut.exists())
{
    // Do whatever you want
}