Eclipseプロジェクトのどこでlog4j.properties
ファイルを追加して、意図したとおりに動作するようにしますか?
任意の場所に追加できます。プロジェクトの実行時にクラスパスを構成し、log4j.propertiesファイルの場所を追加するには、[実行]-> [構成の実行]-> [クラスパスタブ]->ユーザーエントリをクリックします- >詳細設定->フォルダの追加を選択-> log4j.propertiesファイルの場所を選択
そして-> OK->実行
そしてそれはロードされるはずです
IMOがrun/debug configのファイルを指すのが最も安全な方法です
-Dlog4j.configuration=file:mylogging.properties
!注意:Eclipse起動構成を使用する場合、file:
プロトコルの指定は必須です。
この方法では、ロガーは、クラスパスで以前に来たlogging.propertiesもJDKのデフォルトのものもキャッチしません。
また、より豊富な式構文を持ち、より多くのものを許可するlog4j.xmlを実際に使用することを検討してください(log4j.xmlはlog4j.propertiesよりも優先されます。
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インスタンスを実行するユーザーのホームディレクトリです。
最良の方法は、resources
という名前の特別なソースフォルダーを作成し、log4j.propertiesを含むすべてのリソースに使用することです。だから、そこに置いてください。
ダイナミックWebプロジェクトによって自動的に作成されたJava Resourcesフォルダーで、右クリックして新しいソースフォルダーを追加し、「resources」という名前を付けます。ここのファイルは、warファイルからクラスディレクトリにエクスポートされます。
ライブラリがあり、log4jを追加する場合:
(log4jライブラリが追加されていると仮定しました。)
PD:私の英語で申し訳ありません。
この質問はすでに回答済みです here
クラスパスに特定のファイルが含まれることはありません。ディレクトリとjarファイルが含まれます。したがって、そのファイルをclasspath
にあるディレクトリに配置します。
Log4j
プロパティは(通常)アプリの開発では使用されません(Eclipse自体をデバッグしている場合を除きます!)。したがって、実行可能なJavaアプリ(アプリケーション、WAR、EARなど)をビルドし、ランタイムクラスパスにLog4j
プロパティを含めたいのです。
log4j.properties
をランタイムクラスパスに配置します。
この フォーラム は、可能な方法についての投稿を示しています。
一般的には、既に述べたように特別なフォルダー「res」または「resources」に配置しますが、Webアプリケーションの場合は、antタスクでlog4j.properties
をWEB-INF/classesディレクトリにコピーします。 src /フォルダーのルートにファイルを置くのと同じですが、一般的には専用フォルダーに表示することを好みます。
Mavenの場合、通常、置く場所は、この 他の投稿 で回答されているsrc/main/resources
フォルダーです。そこにあるすべてのリソースは、ルートクラスパスでビルドに送られます(例:target/classes/
)
強力なロガーが必要な場合は、 slf4j library を参照してください。これはロガーファサードであり、背後でlog4j実装を使用できます。
Log4j.propertiesをデプロイ可能なプロジェクトにパッケージ化することは望ましくありません。他の投稿者が述べているように、これは悪い考えです。
Eclipseがアプリケーションの実行時に指しているルートTomcatインストールを見つけ、そこの適切な場所にlog4j.propertiesファイルを追加します。 Tomcat 7の場合、適切な場所は
$ {Tomcat_HOME}/lib
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が動作し、ロギングを開始し、世界の問題を解決し、少し時間を取り、おいしいアダルト飲料をお楽しみください。