package com.elab.cache.spring.handle;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cache.Cache;
import org.springframework.cache.interceptor.CacheErrorHandler;

/**
 * 缓存异常处理
 *
 * @author Liukx
 * @create 2017-11-06 17:58
 * @email liukx@elab-plus.com
 **/
public class ErrorCacheHandle implements CacheErrorHandler {

    Logger logger = LoggerFactory.getLogger(ErrorCacheHandle.class);

    public void handleCacheGetError(RuntimeException exception, Cache cache, Object key) {
        logger.error("‖‖‖‖‖‖‖‖‖缓存异常[handleCacheGetError]‖‖‖‖‖‖‖‖‖‖ cache : " + cache.getName() + " \t key : " + key.toString() + " 异常原因 : " + exception.getMessage(), exception);
//        if (logger.isDebugEnabled()) {
//            exception.printStackTrace();
//        }
    }

    public void handleCachePutError(RuntimeException exception, Cache cache, Object key, Object value) {
        logger.error("‖‖‖‖‖‖‖‖‖缓存异常[handleCachePutError]‖‖‖‖‖‖‖‖‖‖ cache : " + cache.getName() + " \t key : " + key.toString() + "\t value : " + value + " 异常原因 : " + exception.getMessage(), exception);
//        if (logger.isDebugEnabled()) {
//            exception.printStackTrace();
//        }
    }

    public void handleCacheEvictError(RuntimeException exception, Cache cache, Object key) {
        logger.error("‖‖‖‖‖‖‖‖‖缓存异常[handleCacheEvictError]‖‖‖‖‖‖‖‖‖‖ cache : " + cache.getName() + " \t key : " + key.toString() + " 异常原因 : " + exception.getMessage(), exception);
//        if (logger.isDebugEnabled()) {
//            exception.printStackTrace();
//        }
    }

    public void handleCacheClearError(RuntimeException exception, Cache cache) {
        logger.error("‖‖‖‖‖‖‖‖‖缓存异常[handleCacheClearError]‖‖‖‖‖‖‖‖‖‖ cache : " + cache.getName() + " 异常原因 : " + exception.getMessage(), exception);
//        if (logger.isDebugEnabled()) {
//            exception.printStackTrace();
//        }
    }
}
