0

log4j.propertiesこの操作中にファイルが見つかるように、ファイルをEclipseプロジェクト構造 のどこに配置しますか。

PropertyConfigurator.configure("log4j.properties");  

次のリンクを見つけました:

Log4j.propertiesをEclipseプロジェクトに配置する正しい場所はどこですか?

しかし、答え(選択)によると、設定はサーバー自体用であり、
すべてのプロジェクトに適用されると思います。しかし、この.propertiesファイルは関係するプロジェクトにのみ必要です。

私のプロジェクト構造は次のとおりです。

AccountCeation //project name  
    Java Resources: src  
        com.alw.controllers //packages  
        .....  
        log4j.properties  

私はいつもそれを手に入れFileNotFoundExceptionます。

注: SpringFrameworkを使用して動的Webアプリケーションを開発しています。

私が行方不明になっているところを教えてください。

4

1 に答える 1

0

Apache Tomcat 6 で Eclipse 動的 Web プロジェクトを実行することで、この問題の解決策を見つけることができました。Spring では、コンテキストにアクセスしてリソースをロードするためのより洗練された方法があるかもしれません。

2 つの基本的な手順

(1) log4j.properties ファイルを war ファイルの「class ディレクトリ」に取得します。

(2) 現在のコンテキストから log4j プロパティ ファイルを読み取ります。これを行う最善の方法は、現在のスレッドのコンテキストにアクセスし、そこから作業することです。

上記の最初のステップでは、Eclipse ビルド プロセスを変更して追加のディレクトリを追加します。このディレクトリは最終的に war ファイルの WEB-INF/classes ディレクトリにロードされます。具体的には....

(1) Eclipse のプロジェクト エクスプローラーでプロジェクトを右クリックし、[新規] -> [フォルダー] を選択します。フォルダには任意の名前を付けることができますが、この場合の標準は「resources」です。新しいフォルダーは、プロジェクトのルート レベルに表示されます。

(2) log4j.properties ファイルをこの新しいフォルダーに移動します。

(3) 再度プロジェクトを右クリックし、'Build-Path'->'Configure Build Path' を選択します。[ソース] タブを選択します。「フォルダを追加」ボタンをクリックします。上記の手順 (1) で作成した新しいフォルダーを参照して見つけます。[OK] を選択します。

(4) Eclipse プロジェクト エクスプローラー ビューに戻ると、フォルダーが「Java リソース」領域に移動したことに注意してください (つまり、Eclipse プレゼンテーションの抽象化により、もはやルートにはありません)。

(5) プロジェクトをクリーンビルドします。

(6) .properties ファイルが war ファイルの WEB-INF/classes に存在することを検証するには、war ファイルを簡単な場所にエクスポートし ([プロジェクト] -> [エクスポート] -> [War ファイル] を右クリック)、内容をチェックアウトします。log4j.properties ファイルが WEB-INF/classes に表示されることに注意してください。

上記の 2 番目のステップでは、コンテキストにアクセスしてファイルを読み取ります。ファイルを読み取ろうとしている場所に次のコードを追加します。これはwarファイルのコンテキストからこれを読み取ることに注意してください。したがって、warファイルがサーバーからサーバーに移動すると、これは「機能するはず」です。

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
PropertyConfigurator.configure(classLoader.getResourceAsStream("log4j.properties") );
于 2014-04-29T15:49:39.283 に答える