1

Log4J2 と Flume-ng を使用して、分散システムの集中ログを作成しようとしています。システム内のサーバーの 1 つは、システムの Web サービス (サーブレット) を実行するために使用している Jetty を実行します。このプロジェクトに Log4J2 と Flume-ng の Maven 依存関係を含めると、Jetty が破損し、適切に起動/バインドされません。以下のリスト (log4j-flume-ng) の依存関係を削除すると、Jetty は通常どおり実行され、次の出力が得られます。

2012-10-08 16:36:33.457::INFO:  Logging to STDERR via org.mortbay.log.StdErrLog
2012-10-08 16:36:34.285 INFO net.spy.memcached.MemcachedConnection:  Added {QA sa=gs-adhoc1-test.jrs-software.co.uk/10.1.1.161:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2012-10-08 16:36:34.290 INFO net.spy.memcached.MemcachedConnection:  Connection state changed for sun.nio.ch.SelectionKeyImpl@31ac05
2012-10-08 16:36:34.272::INFO:  jetty-7.0.0.pre5
2012-10-08 16:36:34.322::INFO:  Started SelectChannelConnector@0.0.0.0:5000

しかし、その依存関係があると、次のようになります (Memcached の出力のみ)。

2012-10-08 16:36:34.285 INFO net.spy.memcached.MemcachedConnection:  Added {QA sa=gs-adhoc1-test.jrs-software.co.uk/10.1.1.161:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2012-10-08 16:36:34.290 INFO net.spy.memcached.MemcachedConnection:  Connection state changed for sun.nio.ch.SelectionKeyImpl@31ac05

Maven POM の依存関係は次のとおりです。

<dependencies>
    <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty</artifactId>
        <version>3.5.4.Final</version>
        <scope>compile</scope>
    </dependency>

    <dependency>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty</artifactId>
        <version>7.0.0.pre5</version>       
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>3.0-alpha-1</version>
        <scope>compile</scope>
    </dependency>

    <dependency>
        <groupId>net.sf.json-lib</groupId>
        <artifactId>json-lib</artifactId>
        <version>2.3</version>
        <classifier>jdk15</classifier>
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>net.sf.ezmorph</groupId>
        <artifactId>ezmorph</artifactId>
        <version>1.0.6</version>
    </dependency>  

    <dependency>
        <groupId>couchdb4j</groupId>
        <artifactId>couchdb4j</artifactId>
        <version>0.5.0-i386-1</version>
    </dependency>

    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20090211</version>
    </dependency>

    <dependency>
        <groupId>com.google.code.simple-spring-memcached</groupId>
        <artifactId>spymemcached</artifactId>
        <version>2.8.1</version>
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.0-beta1</version>
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.0-beta1</version>
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-flume-ng</artifactId>
        <version>2.0-alpha2</version>       
    </dependency>
</dependencies>

これを解決する方法がわかりません。Flume を他のサーバーと問題なく動作させることができましたが、Jetty には何もないようです。誰かがこれを機能させるためのアドバイスを提供できますか?

4

1 に答える 1

2

最近、プロジェクトで log4j2 とともに jetty-6.1.26 を使用しました。commons-logging を除外するのではなく、他のパッケージからブリッジする log4j2-jcl を見逃しているようです。それなしではプロジェクトを開始できませんでした。Commons-logging.propertiesを定義して Log4j2 実装を使用し、それがクラス パスの最初に表示されるようにする必要があります。

org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger

log4j2 はまだ beta2 であり、commons-logging に関する既知のバグがあります。ベータ 3 で修正されていることがわかりましたが、いつリリースされるかはわかりません。

于 2012-11-01T10:15:58.927 に答える