web-dev-qa-db-ja.com

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

Eclipseプロジェクトのどこでlog4j.propertiesファイルを追加して、意図したとおりに動作するようにしますか?

58
Srinivas Reddy

任意の場所に追加できます。プロジェクトの実行時にクラスパスを構成し、log4j.propertiesファイルの場所を追加するには、[実行]-> [構成の実行]-> [クラスパスタブ]->ユーザーエントリをクリックします- >詳細設定->フォルダの追加を選択-> log4j.propertiesファイルの場所を選択

そして-> OK->実行

そしてそれはロードされるはずです

84
Charbel

IMOがrun/debug configのファイルを指すのが最も安全な方法です

-Dlog4j.configuration=file:mylogging.properties

!注意:Eclipse起動構成を使用する場合、file:プロトコルの指定は必須です。

この方法では、ロガーは、クラスパスで以前に来たlogging.propertiesもJDKのデフォルトのものもキャッチしません。

また、より豊富な式構文を持ち、より多くのものを許可するlog4j.xmlを実際に使用することを検討してください(log4j.xmlはlog4j.propertiesよりも優先されます。

33
Alain Pannetier

Log4j.propertiesファイルをプロジェクトのランタイムクラスパスに追加します。一部の人々は、これをソースツリーのルートに追加します(そのため、コンパイルされたクラスのルートにコピーされます)。

編集:プロジェクトがMavenプロジェクトの場合、log4j.propertiesをsrc/main/resourcesフォルダー(および単体テストのsrc/test/resources)に配置できます。

複数の環境(開発と本番など)があり、環境ごとに異なるロギングが必要であり、同じjar(またはwarまたはear)ファイルを各環境にデプロイする場合(すべての環境の1つのビルドの場合)、 jarファイルの外部のlog4j.propertiesファイルを作成し、各環境のクラスパスに配置します(環境によって構成可能)。歴史的には、クラスパスの各環境に既知のディレクトリを含め、環境固有のものをそこにデプロイしていました。たとえば、〜Tomcat_user/localclasspathの場合、〜Tomcat_userは、warファイルがデプロイされるTomcatインスタンスを実行するユーザーのホームディレクトリです。

12
DwB

最良の方法は、resourcesという名前の特別なソースフォルダーを作成し、log4j.propertiesを含むすべてのリソースに使用することです。だから、そこに置いてください。

ダイナミックWebプロジェクトによって自動的に作成されたJava Resourcesフォルダーで、右クリックして新しいソースフォルダーを追加し、「resources」という名前を付けます。ここのファイルは、warファイルからクラスディレクトリにエクスポートされます。

10
AlexR

ライブラリがあり、log4jを追加する場合:

  1. プロジェクトに「resources」という名前のフォルダーを作成します。
  2. Log4jという名前の.propertiesファイルを作成します。
  3. Log4j.propertiesファイルでプロパティを設定します
  4. プロジェクトの右ボタンを押して、プロパティ-> Javaビルドパスに移動し、最後に「ソース」タブに移動します。
  5. [フォルダの追加]を押して、手順1で作成した「リソース」フォルダを検索します。
  6. 終わり。

(log4jライブラリが追加されていると仮定しました。)

PD:私の英語で申し訳ありません。

7

この質問はすでに回答済みです here

クラスパスに特定のファイルが含まれることはありません。ディレクトリとjarファイルが含まれます。したがって、そのファイルをclasspathにあるディレクトリに配置します。

Log4jプロパティは(通常)アプリの開発では使用されません(Eclipse自体をデバッグしている場合を除きます!)。したがって、実行可能なJavaアプリ(アプリケーション、WAR、EARなど)をビルドし、ランタイムクラスパスにLog4jプロパティを含めたいのです。

4
sgokhales

log4j.propertiesをランタイムクラスパスに配置します。

この フォーラム は、可能な方法についての投稿を示しています。

3
Matt Ball

一般的には、既に述べたように特別なフォルダー「res」または「resources」に配置しますが、Webアプリケーションの場合は、antタスクでlog4j.propertiesをWEB-INF/classesディレクトリにコピーします。 src /フォルダーのルートにファイルを置くのと同じですが、一般的には専用フォルダーに表示することを好みます。

Mavenの場合、通常、置く場所は、この 他の投稿 で回答されているsrc/main/resourcesフォルダーです。そこにあるすべてのリソースは、ルートクラスパスでビルドに送られます(例:target/classes/

強力なロガーが必要な場合は、 slf4j library を参照してください。これはロガーファサードであり、背後でlog4j実装を使用できます。

2
рüффп

Log4j.propertiesをデプロイ可能なプロジェクトにパッケージ化することは望ましくありません。他の投稿者が述べているように、これは悪い考えです。

Eclipseがアプリケーションの実行時に指しているルートTomcatインストールを見つけ、そこの適切な場所にlog4j.propertiesファイルを追加します。 Tomcat 7の場合、適切な場所は

$ {Tomcat_HOME}/lib

1
Erica Kane

Log4j.propertiesファイルの場所は、Eclipseプロジェクトのタイプに依存することがわかりました。

具体的には、Eclipse Dynamic Web Projectの場合、log4j.propertiesをwarファイルに追加することに関する回答のほとんどは、特にTomcat/Apacheの場合、プロパティファイルを正しい場所に実際に追加しません。

これが私の問題のいくつかの研究と解決策です(Tomcat/Apache 6.0で実行される動的Webプロジェクトの場合も特に)

  • Tomcatがクラスをロードする方法については、この記事を参照してください。 Javaの通常のクラスローダーとは異なります。 ( https://www.mulesoft.com/tcat/Tomcat-classpath )warファイルの2つの場所、WEB-INF/classesおよびWEB-INF/libのみを検索することに注意してください。

  • ダイナミックWebプロジェクトでは、プロジェクトをクリーンビルドするたびにこのディレクトリが消去されるため、build /../ classesディレクトリに.propertiesファイルを保存することは賢明ではないことに注意してください。

  • Tomcatは、WEB-INF/libの場所にある.propertyファイルを処理しません。

  • Eclipseはビューからディレクトリを抽象化するため、log4j.propertiesファイルをsrcディレクトリに保存することはできません。

  • これを解決するために見つけた1つの方法は、ビルドを変更し、最終的にwarファイルのWEB-INF/classesディレクトリにロードする追加のディレクトリを追加することです。具体的には...

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

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

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

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

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

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

(7)プロジェクトをTomcat/Apacheにプロモートし、log4jが動作することに注意してください。

Log4jが動作し、ロギングを開始し、世界の問題を解決し、少し時間を取り、おいしいアダルト飲料をお楽しみください。

1
Robert Bender