当前位置: 首页 > news >正文

网站域名做链接怎么做简述网站的建站流程

网站域名做链接怎么做,简述网站的建站流程,上海做運動网站的公司,上海跨境电商网站开发公司排名适配器模式相关源代码#xff1a;slf4j-1.6.1、hibernate-3.6.7大家都知道。log4j是一个广泛使用的日志工具#xff0c;除此之外。sun公司在JDK中也有自己的日志工具#xff0c;也就是java.util.logging.Logger。当然还有其它一些日志工具。多种日志工具功能和使用方式相似slf4j-1.6.1、hibernate-3.6.7大家都知道。log4j是一个广泛使用的日志工具除此之外。sun公司在JDK中也有自己的日志工具也就是java.util.logging.Logger。当然还有其它一些日志工具。多种日志工具功能和使用方式相似一般都包括debug、info、warn、error等日志级别的方法但却没有实现共同的接口。这一点不像JDBC。尽管关系型数据库种类非常多。比如MySQL、Oracle等可是有一套统一的接口也就是JDBC。当然。假设你自己写一个项目仅仅要随便找一个日志工具用即可。可是一些开源框架的作者就比較纠结了。他不知道你的系统用的是哪种日志工具。就不知道他在开源框架中使用哪一个日志工具。slf4j提供了一个共同的接口。并实现了不同日志工具的适配器。所以开源框架中日志仅仅须要调用slf4j提供的接口即可不须要关心究竟是用的哪个实现类。比如ORM框架Hibernate的日志就依赖slf4j。和slf4j相似的还有commons-logging等。源代码因为源代码巨长所下面面省略无关代码slf4j提供统一的接口org.slf4j.Logger该接口提供给client如Hibernate去调用package org.slf4j;public interface Logger {public boolean isTraceEnabled();public void trace(String msg);public void trace(String format, Object arg);public void trace(String format, Object arg1, Object arg2);public void trace(String format, Object[] argArray);public void trace(String msg, Throwable t);public boolean isDebugEnabled();public void debug(String msg);public void debug(String format, Object arg);public void debug(String format, Object arg1, Object arg2);public void debug(String format, Object[] argArray);public void debug(String msg, Throwable t);public boolean isInfoEnabled();public void info(String msg);public void info(String format, Object arg);public void info(String format, Object arg1, Object arg2);public void info(String format, Object[] argArray);public void info(String msg, Throwable t);public boolean isWarnEnabled();public void warn(String msg);public void warn(String format, Object arg);public void warn(String format, Object[] argArray);public void warn(String format, Object arg1, Object arg2);public void warn(String msg, Throwable t);public boolean isErrorEnabled();public void error(String msg);public void error(String format, Object arg);public void error(String format, Object arg1, Object arg2);public void error(String format, Object[] argArray);public void error(String msg, Throwable t);}在clienthibernate中不是直接调用log4j或JDK logger。而是使用org.slf4j.Logger接口。任取hibernate中有日志的一段代码注LoggerFactory.getLogger怎样实现本文不须要关注package org.hibernate.impl;import org.slf4j.Logger; import org.slf4j.LoggerFactory;public final class SessionFactoryImpl implements SessionFactory, SessionFactoryImplementor {private static final Logger log LoggerFactory.getLogger(SessionFactoryImpl.class);private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {log.trace(deserializing);in.defaultReadObject();log.debug(deserialized: uuid);}private void writeObject(ObjectOutputStream out) throws IOException {log.debug(serializing: uuid);out.defaultWriteObject();log.trace(serialized);}}而log4j以及JDK的logger并没有实现slf4j的org.slf4j.Logger接口所以slf4j要提供适配器来实现org.slf4j.Logger接口。由适配器去调用log4j或JDK的logger去实现日志从而实现日志工具兼容。注意源代码中能够看出LocationAwareLogger接口继承org.slf4j.Logger所以实现LocationAwareLogger相当于实现了org.slf4j.LoggerLog4j适配器org.slf4j.impl.Log4jLoggerAdapterpackage org.slf4j.impl;import java.io.Serializable;import org.apache.log4j.Level; import org.slf4j.Logger; import org.slf4j.Marker; import org.slf4j.helpers.FormattingTuple; import org.slf4j.helpers.MessageFormatter; import org.slf4j.spi.LocationAwareLogger;public final class Log4jLoggerAdapter extends MarkerIgnoringBase implementsLocationAwareLogger, Serializable {final transient org.apache.log4j.Logger logger;public boolean isDebugEnabled() {return logger.isDebugEnabled();}public void debug(String msg) {logger.log(FQCN, Level.DEBUG, msg, null);}public void debug(String format, Object arg) {if (logger.isDebugEnabled()) {FormattingTuple ft MessageFormatter.format(format, arg);logger.log(FQCN, Level.DEBUG, ft.getMessage(), ft.getThrowable());}}public void debug(String format, Object arg1, Object arg2) {if (logger.isDebugEnabled()) {FormattingTuple ft MessageFormatter.format(format, arg1, arg2);logger.log(FQCN, Level.DEBUG, ft.getMessage(), ft.getThrowable());}}public void debug(String format, Object[] argArray) {if (logger.isDebugEnabled()) {FormattingTuple ft MessageFormatter.arrayFormat(format, argArray);logger.log(FQCN, Level.DEBUG, ft.getMessage(), ft.getThrowable());}}public void debug(String msg, Throwable t) {logger.log(FQCN, Level.DEBUG, msg, t);}}Jdk logger适配器org.slf4j.impl.JDK14LoggerAdapterpackage org.slf4j.impl;import java.util.logging.Level;import org.slf4j.Marker; import org.slf4j.helpers.FormattingTuple; import org.slf4j.helpers.MarkerIgnoringBase; import org.slf4j.helpers.MessageFormatter; import org.slf4j.spi.LocationAwareLogger;public final class JDK14LoggerAdapter extends MarkerIgnoringBase implementsLocationAwareLogger {final java.util.logging.Logger logger;public boolean isDebugEnabled() {return logger.isLoggable(Level.FINE);}public void debug(String msg) {if (logger.isLoggable(Level.FINE)) {log(SELF, Level.FINE, msg, null);}}public void debug(String format, Object arg) {if (logger.isLoggable(Level.FINE)) {FormattingTuple ft MessageFormatter.format(format, arg);log(SELF, Level.FINE, ft.getMessage(), ft.getThrowable());}}public void debug(String format, Object arg1, Object arg2) {if (logger.isLoggable(Level.FINE)) {FormattingTuple ft MessageFormatter.format(format, arg1, arg2);log(SELF, Level.FINE, ft.getMessage(), ft.getThrowable());}}public void debug(String format, Object[] argArray) {if (logger.isLoggable(Level.FINE)) {FormattingTuple ft MessageFormatter.arrayFormat(format, argArray);log(SELF, Level.FINE, ft.getMessage(), ft.getThrowable());}}public void debug(String msg, Throwable t) {if (logger.isLoggable(Level.FINE)) {log(SELF, Level.FINE, msg, t);}}}在适配器模式中一般包括下面几个部分Adaptee真正实现功能的实现类可是与client不兼容。也就是上面代码中的java.util.logging.Logger、org.apache.log4j.Logger。Target给client调用的接口适配器实现这个接口。就是上面代码中的org.slf4j.Logger。Adapter适配器适配器实现Target接口详细功能调用Adaptee来实现。就是上面的org.slf4j.impl.Log4jLoggerAdapter、org.slf4j.impl.JDK14LoggerAdapter。Client调用Target接口。就是上面的Hibernate。总结有多个相似的类比如java.util.logging.Logger、org.apache.log4j.Logger没有统一的接口可是client又都想要兼容。遇到这样的情况最好的办法是重构也就是让他们实现同一接口。可是假设重构成本太大或者根本就无法实现同一接口比如上面的样例。log4j和JDK logger根本就不是一家的就必须创造出统一的接口即org.slf4j.Logger。并为每一个类写一个适配器即org.slf4j.impl.Log4jLoggerAdapter、org.slf4j.impl.JDK14LoggerAdapter。让适配器来实现统一的接口并调用详细的实现类来实现已达到兼容的目的。作者叉叉哥   转载请注明出处http://blog.csdn.net/xiao__gui/article/details/32695647 转载于:https://www.cnblogs.com/jhcelue/p/6916363.html
http://www.zqtcl.cn/news/167685/

相关文章:

  • 村建站什么部门网站建设步骤图
  • 移动端网站建设的意义中工信融网站建设
  • 网站设计宽屏尺寸盐城网站建设渠道合作
  • 网站所有者查询hexo做网站
  • 杭州专业网站设计策划大数据网站建设和
  • 建一个自己的网站需要多少钱泰州网站快速排名优化
  • 企业网站的建设企业湖南网络推广
  • 山西省建设厅投诉网站郴州新网交友手机版
  • 营销网站建设是什么flash个人网站欣赏
  • 网站建设最简单的教程视频教程建设厅注册中心网站首页
  • 免费做网站凡科wordpress 分享到微信 插件
  • 购物网站项目建设内容有啥网站是专做时尚穿搭
  • 网上下载的网站模板怎么用wordpress 注册密码
  • 网站建设免费国外撤销网站备案申请书
  • 佛山做网站那家好网站建设公司如何盈利
  • 傻瓜建网站设计感网站
  • 北京网站优化软件陕西省建筑信息平台
  • 广州越秀建网站济南房产网新开楼盘
  • 线上咨询预约网站建设方案保定外贸网站制作
  • 网站流量如何增加提高工作效率的措施
  • 龙湖镇华南城网站建设.net 网站开发书籍
  • 域名费用和网站服务器费用是同样的吗推广营销方案
  • 安徽网站设计方案中文外贸网站有哪些
  • 衡阳手机网站设计响应式网站做多大的尺寸
  • 海尔电子商务网站建设预算灵台县门户网
  • 四川网站建设设计公司排名开发公司与建筑公司合作协议
  • 江西智能网站建设嘉定注册公司
  • 海口网站建设联系方式十大免费软文推广平台
  • 石碣镇做网站帮别人做网站开价
  • 站长 网站ip客户都不愿意做网站