javar日志可以使用SLF4J,SLF4J 全称为 Simple Logging Facade for JAVA,即 java 简单日志门面。 和 commons-loging 一样也是对不同日志框架提供的一个门面封装,可以在部署的时候不修改任何配置即可接入一种日志实现方案,能支持多个参数,并通过 {} 占位符进行替换。例如:log.error("服务调用失败:{}",throwable.getMessage());其中{}为占位符,后面的参数throwable.getMessage()会填充此占位符。上面代码将会在控制台打印实际输出的日志,throwable.getMessage()返回该throwable的详细消息字符串。

    1. @Component
    2. public class RemoteProviderFallbackFactory implements FallbackFactory<RemoteProviderService> {
    3. /**
    4. * 门面模式
    5. * org.slf4j.Logger为java的日志规范,定义了一组接口
    6. * org.slf4j.Logger接口的实现有log4j,logback
    7. */
    8. private static final Logger log = LoggerFactory.getLogger(RemoteProviderFallbackFactory.class);
    9. @Override
    10. public RemoteProviderService create(Throwable throwable) {
    11. //{}为占位符,后面的参数throwable.getMessage()会填充此占位符
    12. log.error("服务调用失败:{}",throwable.getMessage());
    13. //jdk8中的lambda表达式写法
    14. return msg -> "<h1>请稍后访问</h1>";
    15. }
    16. }

    可以使用@Slf4j注解来代替 private static final Logger log = LoggerFactory.getLogger(RemoteProviderFallbackFactory.class);

    1. @Slf4j
    2. @Component
    3. public class RemoteProviderFallbackFactory implements FallbackFactory<RemoteProviderService> {
    4. @Override
    5. public RemoteProviderService create(Throwable throwable) {
    6. //{}为占位符,后面的参数throwable.getMessage()会填充此占位符
    7. log.error("服务调用失败:{}",throwable.getMessage());
    8. //jdk8中的lambda表达式写法
    9. return msg -> "<h1>请稍后访问</h1>";
    10. }
    11. }