// 查找常用的日志框架 // 没有配置 循环判断哪个可以使用 // 根据一个配置来加载 感觉没有用扩展点加载好 static { String logger = System.getProperty("dubbo.application.logger"); if ("slf4j".equals(logger)) { setLoggerAdapter(new Slf4jLoggerAdapter()); } else if ("jcl".equals(logger)) { setLoggerAdapter(new JclLoggerAdapter()); } else if ("log4j".equals(logger)) { setLoggerAdapter(new Log4jLoggerAdapter()); } else if ("jdk".equals(logger)) { setLoggerAdapter(new JdkLoggerAdapter()); } else { try { setLoggerAdapter(new Log4jLoggerAdapter()); } catch (Throwable e1) { try { setLoggerAdapter(new Slf4jLoggerAdapter()); } catch (Throwable e2) { try { setLoggerAdapter(new JclLoggerAdapter()); } catch (Throwable e3) { setLoggerAdapter(new JdkLoggerAdapter()); } } } } }
/** * 用扩展点方法设置当前日志输出提供器 个人感觉此处才有用 但运行时候调用 会有很多额外操作 会更改所有缓存的日志输出器 * * @param loggerAdapter */ public static void setLoggerAdapter(String loggerAdapter) { if (loggerAdapter != null && loggerAdapter.length() > 0) { setLoggerAdapter( ExtensionLoader.getExtensionLoader(LoggerAdapter.class).getExtension(loggerAdapter)); } }