logging.properties で構成されている catalina.out ファイルのパスを取得する必要があります。
プロパティファイルへのパスを知らなくても、Java経由でプロパティ「1catalina.org.apache.juli.FileHandler.directory」を取得する方法はありますか?
logging.properties
私の理解が正しければ、Tomcatファイルの属性を読みたいと思うでしょう。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 システム プロパティによって指定されます。- 読み取り不能または構成されていない場合、デフォルト
${java.home}/lib/logging.properties
では JRE 内のファイルが使用されます。Web アプリケーションで。ファイルはWEB-INF/classes/logging.properties
デフォルトでは、ファイルへのパスはそれぞれlogging.properties
環境変数で利用できるはずです。catalina.base
CATALINA_BASE
ファイルcatalina.out
はどのシステム プロパティでも指定されておらず、で指定されていませんlogging.properties
(見てください、そこにはありません)。
代わりに、(または)catalina.out
内から起動スクリプトのシェルベースの出力リダイレクトによって作成されます。つまり、このファイルは、これらのスクリプト、またはこの動作をエミュレートするスクリプトを使用して Tomcat を起動した場合にのみ使用できます。たとえば、*NIX プラットフォームまたは Tomcat Windows サービスで使用する場合、ファイルは作成されません (少なくともデフォルトでは作成されません)。bin/catalina.sh
bin/catalina.bat
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
}