我需要獲取在logging.properties中配置的catalina.out文件的路徑。如何在java程序中檢索catalina.out的路徑?
有沒有辦法通過java檢索屬性「1catalina.org.apache.juli.FileHandler.directory」而不知道屬性文件的路徑?
我需要獲取在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