【问题标题】:How to retrieve path of catalina.out in java program?如何在 java 程序中检索 catalina.out 的路径?
【发布时间】:2012-07-31 05:09:55
【问题描述】:

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

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

【问题讨论】:

    标签: java tomcat logging tomcat6


    【解决方案1】:

    如果我对您的理解正确,那么您想读取 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.baseCATALINA_BASE 上可用。

    【讨论】:

    • 好方法,但我没有得到属性“java.util.logging.config.file” - 我只收到 null...
    • @reini122 我又添加了一段。如果未设置系统变量,它至少应该在 Java 或 Catalina 环境变量中可用。
    • 非常感谢,通过 catalina.base 阅读 logging.properties 有效!
    【解决方案2】:

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

    【讨论】:

    • 感谢您的建议,这正是我现在正在做的。我正在通过 catalina.base 读出路径并“猜测”该文件在那里。如果不是,我什么也做不了,但通常它就在那里。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    相关资源
    最近更新 更多