2012-04-02 10 views
0

プロジェクトをeclipseで作成することができますか、またはlog4j初期化コードを書き込んでプロジェクトとして保存することができるJava IDEであれば、どのワークスペースでもインポートできます。私はinit()メソッドでロガーを初期化し、起動時にサーブレットをロードするサーブレットを構成する方法を知っていますが、アプリケーションに応じて変更するweb-xmlのエントリが必要です。Webアプリケーションで使用する再利用可能なログプロジェクトを作成する方法はありますか?

復活可能なプロジェクトには、DDへの依存性が要求されない方法はありますか?

+0

"DD"とは何ですか? –

+0

標準的な場所にどのような正確な手順が必要ですか? –

+0

@Stephen - デプロイメント・ディスクリプタ* :) – Vrushank

答えて

2

@Stephen Cの回答に加えて、一部のアプリケーションサーバーには事前定義済みのログ構成が既に用意されています。 JBossを使用している場合は、jboss-log4j.xmlというファイルに独自のlog4j設定があります。これは標準設定を定義しており、ニーズに合わせることができます。

それ以外の設定では、他の回答と同じようにアプリケーションにバンドルすることをお勧めします。

さらにスマートで柔軟性の高いアプリケーションでは、アプリケーションのログラッパーを使用して、基になるログフレームワークから抽象化します。ログインhttp://www.slf4j.org/

  • コモンズ:

    をあなたはこれらのいずれかを使用する場合は、その後のロギングフレームワークを使用するように設定することができますあなたが配備しているサーバ。一般的なオープンソース・フレームワークの多くは、同様の理由でこれらのログ・ラッパー・フレームワークを使用しています。 SLF4Jを強くお勧めします。

  • 3

    私は良い方法はおそらくあり

    ...私はinit()メソッドでロガーを初期化したサーブレットを設定し、起動時にサーブレットをロードする方法を知っています。

    たとえば、(Tomcatを使用して)サーブレットでlog4j設定を行う方法は、クラスパス上にlog4j.propertiesファイルを置くだけです。例えば".../webapps/MyApp/WEB-INF/classes /"にあります。ロギングプロパティを見つけるためのLog4jのデフォルト戦略では、Javaコードを記述する必要はありません。

    ロギングシステムをJavaコードから構成することは、ロギングを調整するためにJavaコードを変更、再構築、再デプロイする必要があるため、(IMO)というのは悪い考えです。

    +0

    あなたは 'log4j.properties'または' log4j.xml'ファイルを作成し、それを自分の望むように設定してクラスパスに追加するだけですか? – Vrushank

    +1

    はい。しかし、私はWebAppのクラスパスがWebコンテナにデプロイされていることを意味しています。 [[あなたにはクラスパスがあった場合、人々はあなたの脳のガベージが収集されるにつれ、数分ごとに目を覚ますことに気付くでしょう:])]] –

    2

    内部でログフレームワークを使用する際の主な問題の1つWebアプリケーションでは、通常、ファイルに書き込むことになり、サーブレットAPI内では許可されず、微妙なベンダーマルチコンピュータの展開ではうまく機能しません。

    私は強くあなたはそれが最後の独立したバックになっ

    • にあなたを許す限り、あなたの実際のログ文にSLJF4を使用するようにコードを変換し検討することをお勧めします。
    • "{}"プレースホルダを使用してlog.debug("a={}, b={}", a, b)と書き留めてください。if log.debugging-enabledのガードを追加せずにデバッグログが有効になっていない場合は、実際のロギング文字列が生成される可能性があります。

    この2つは、私が切り替えるのに十分な理由でした。

    ロギングを処理する非常に興味深い方法は、java.util.loggingブリッジを使用して、すべてのログステートメントを、ほとんどのWebコンテナが処理するJavaログシステムに送信することです。その後、Webコンテナがすべての作業を行い、ベンダーツールを使用してログファイルを調査することができます。非常に便利!

    関連する問題