code: private static LogFactory doCreate() {
  		try {
  			return new Slf4jLogFactory(true);
  		} catch (NoClassDefFoundError e) {
  			// ignore
  		}
  		try {
  			return new Log4j2LogFactory();
  		} catch (NoClassDefFoundError e) {
  			// ignore
  		}
  		try {
  			return new Log4jLogFactory();
  		} catch (NoClassDefFoundError e) {
  			// ignore
  		}
  		try {
  			return new ApacheCommonsLogFactory();
  		} catch (NoClassDefFoundError e) {
  			// ignore
  		}
  		try {
  			return new TinyLogFactory();
  		} catch (NoClassDefFoundError e) {
  			// ignore
  		}
  		try {
  			return new JbossLogFactory();
  		} catch (NoClassDefFoundError e) {
  			// ignore
  		}
  
  		// 未找到任何可支持的日志库时判断依据：当JDK Logging的配置文件位于classpath中，使用JDK Logging，否则使用Console
  		final URL url = ResourceUtil.getResource("logging.properties");
  		return (null != url) ? new JdkLogFactory() : new ConsoleLogFactory();
  	}
docs: 决定日志实现
  <p>
  依次按照顺序检查日志库的jar是否被引入，如果未引入任何日志库，则检查ClassPath下的logging.properties，存在则使用JdkLogFactory，否则使用ConsoleLogFactory
  
  @see Slf4jLogFactory
  @see Log4j2LogFactory
  @see Log4jLogFactory
  @see ApacheCommonsLogFactory
  @see TinyLogFactory
  @see JbossLogFactory
  @see ConsoleLogFactory
  @see JdkLogFactory
  @return 日志实现类