16

私のSpring + Hibernateプロジェクトでは、LogBackを使用してSLF4J 1.6.4でロギングを行っていました。ここで、Ehcache 2.2.0 を追加しました (ehcache-spring-annotations-1.1.3 を介して)。キャッシングは、正しい結果を返しますが、実行されなくなった @Cacheable で注釈が付けられたメソッドとして機能しているようです。しかし、Ehcache によって書き込まれたログを見ることに興味があります。Ehcache も SLF4J を使用しているため、ログはログ ファイルに書き込まれるはずです。しかし、これは起こっていません。logback.xml には次のものがあります。

 <root level="info">
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="ROLLING"/>
</root>

以下を追加しても役に立たない

 <logger name="net.sf.ehcache"> 
</logger> 

Ehcache.xml

    <cache name="sampleCache1"
       eternal="false"
       overflowToDisk="true"
       timeToIdleSeconds="300"
       timeToLiveSeconds="600"           
       memoryStoreEvictionPolicy="LFU"           
        />

問題を克服するためのアドバイスをお願いします。

Ehcache は SLF4J 1.6.1 を使用していますが、私のプロジェクトは SLF4J 1.6.4 を使用していました。問題を引き起こす可能性はありますか?

ありがとう

4

4 に答える 4

54

EhCache はDEBUGレベルで多くのログを記録します。まず、この構成スニペットは、以下のすべてのログ ステートメントを除外しますINFO

<root level="info">

に変更します

<root level="ALL">

第二に

<logger name="net.sf.ehcache">

ログレベルを上げる必要がある

<logger name="net.sf.ehcache" level="ALL"/> 

その後、EhCache (およびその他) からの多数のログ ステートメントが表示されるはずです。

于 2012-05-22T16:17:51.877 に答える
5

org.springframework.cacheまた、Spring Framework 4.2.1 のキャッシング機能 (@Cacheable など) を使用しているため、DEBUG ロギングを有効にすると便利でした。

于 2015-09-17T08:39:30.670 に答える
3

次のように CacheEventListener インターフェイスを実装して、Ehcache 3 用のカスタム ロガーを作成しました。

public class CacheLogger implements CacheEventListener<Object, Object> {

    private static final Logger LOG = LoggerFactory.getLogger(CacheLogger.class);

    @Override
    public void onEvent(CacheEvent<?, ?> cacheEvent) {
        LOG.info("YOUR LOG IS HERE");
    }
}

ehcache.xml はリスナー クラスを定義します。

<cache-template name="default">
        <expiry>
            <ttl unit="seconds">300</ttl>
        </expiry>
        <listeners>
            <listener>
                <class>com.path.to.CacheLogger</class>
                <event-firing-mode>ASYNCHRONOUS</event-firing-mode>
                <event-ordering-mode>UNORDERED</event-ordering-mode>
                <events-to-fire-on>CREATED</events-to-fire-on>
                <events-to-fire-on>EXPIRED</events-to-fire-on>
                <events-to-fire-on>EVICTED</events-to-fire-on>
            </listener>
        </listeners>
        <resources>
            <heap>1000</heap>
            <offheap unit="MB">10</offheap>
        </resources>
    </cache-template>
于 2020-03-12T13:22:50.813 に答える