3

logging.properties で構成されている catalina.out ファイルのパスを取得する必要があります。

プロパティファイルへのパスを知らなくても、Java経由でプロパティ「1catalina.org.apache.juli.FileHandler.directory」を取得する方法はありますか?

4

2 に答える 2

3

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.baseCATALINA_BASE

于 2012-08-02T09:01:52.283 に答える
0

ファイルcatalina.outはどのシステム プロパティでも指定されておらず、で指定されていませんlogging.properties(見てください、そこにはありません)。

代わりに、(または)catalina.out内から起動スクリプトのシェルベースの出力リダイレクトによって作成されます。つまり、このファイルは、これらのスクリプト、またはこの動作をエミュレートするスクリプトを使用して Tomcat を起動した場合にのみ使用できます。たとえば、*NIX プラットフォームまたは Tomcat Windows サービスで使用する場合、ファイルは作成されません (少なくともデフォルトでは作成されません)。bin/catalina.shbin/catalina.batjsvclogs/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
}
于 2012-08-02T15:03:30.437 に答える