2

Spring を使用するほとんどの Java プロジェクトでは、サーバーの起動時に実行される web.xml に次のエントリがあります。

<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

の目的はLog4jConfigListener何ですか?

私のレガシー プロジェクトでも、この設定を確認できます。ただし、コードに飛び込むと、このクラスまたはこのクラスによって内部的に呼び出されるさらに別のクラスで行われた特別なことは見つかりません。上記のコード スニペットを配置することには何らかの目的があるに違いないと確信していますが、それを見逃しています。

ログをファイルに入れるすべてのクラスで、ここにエントリがあります

private static final Log    log  = LogFactory.getLog(PoolManagerImpl.class);
log.debug("Number of connection pools to create = ["
    + connection.size() + "]");

web.xml エントリをコメントアウトしても、ログは正常に機能します。それで、その目的は何ですか?

4

1 に答える 1

7

Log4jConfigListener、必要に応じてすぐに「遅延構成」するのではなく、Web アプリケーションが起動するとすぐに Log4j「サブシステム」を初期化します。

私の意見では、Log4JConfigListener を介して log4j を明示的に初期化する主な利点は、サーブレット コンテキスト パラメータを使用して log4j 構成ファイルの場所を構成できることです。アプリケーションのデプロイ方法によっては、展開された WAR ディレクトリ内を掘り下げなくても、ある種の管理者ユーザーが実行時に構成を変更できる場合があります。

Log4jConfigListenerの javadoc を参照してください。さらに重要なのはLog4jWebConfigurerです。実際の作業を行うためです。

于 2012-04-16T08:15:38.517 に答える