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

资讯网站模版域名138查询网

资讯网站模版,域名138查询网,地方门户网站系统,做网站需要交管理费吗slf4j 是一个日志规范框架;基本上所有的 JAVA 日志都要实现这个规范;比如:Logback、log4j、log4j2;本文档记载如何实现 slf4j 规范;实现自己的日志框架; slf4j 分为两个部分,其中包含 &#xf…

slf4j 是一个日志规范框架;基本上所有的 JAVA 日志都要实现这个规范;比如:Logbacklog4jlog4j2;本文档记载如何实现 slf4j 规范;实现自己的日志框架;

slf4j 分为两个部分,其中包含 :1.7.x 及其以前的版本、1.7.x 以后的版本;之所以这么说;是因为他们区分注册方式,前面的版本使用固定的类路径进行注册,后面版本使用 JAVA SPI 进行注册

1. 重写日志实现

实现日志打印类,包含了日志输出的逻辑方法:

package com.maple.logger;import org.slf4j.Logger;import java.io.Serializable;public final class MapleLogger implements Logger, Serializable {private final String loggerName;public MapleLogger(String loggerName) {this.loggerName = loggerName;}@Overridepublic String getName() {return this.loggerName;}
}

实现日志打印类获取工厂:

package com.maple.logger;import org.slf4j.ILoggerFactory;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;public class MapleLoggerFactory implements ILoggerFactory {private final ConcurrentMap<String, MapleLogger> loggerMap = new ConcurrentHashMap<>();@Overridepublic MapleLogger getLogger(String name) {MapleLogger logger = loggerMap.get(name);if (logger != null) {return logger;} else {MapleLogger newInstance = new MapleLogger(name);MapleLogger oldInstance = loggerMap.putIfAbsent(name, newInstance);return oldInstance == null ? newInstance : oldInstance;}}
}

2. 日志绑定

这里才是不同版本的区别,负责把日志框架绑定到运行的程序上下文中:

首先说 1.7.x 之前的版本绑定方法:

创建一个绑定类,用于返回日志工厂实力,但是此类路径必须固定死为 org.slf4j.impl.StaticLoggerBinder 如果不是这个全限定名,则无法进行绑定

package org.slf4j.impl;import com.maple.logger.MapleLoggerFactory;
import org.slf4j.ILoggerFactory;public class StaticLoggerBinder implements org.slf4j.spi.LoggerFactoryBinder {private static StaticLoggerBinder SINGLETON = new StaticLoggerBinder();public static String REQUESTED_API_VERSION = "1.0";private static final String loggerFactoryClassStr = MapleLoggerFactory.class.getName();private final ILoggerFactory loggerFactory;private StaticLoggerBinder() {loggerFactory = new MapleLoggerFactory();}@Overridepublic ILoggerFactory getLoggerFactory() {return loggerFactory;}@Overridepublic String getLoggerFactoryClassStr() {return loggerFactoryClassStr;}public static StaticLoggerBinder getSingleton() {return SINGLETON;}
}

再说 1.7.x 之后的版本绑定方法:

这里采用 SPI 方式进行加载日志绑定类,首先创建日志绑定类:

package com.maple.logger;import org.slf4j.ILoggerFactory;
import org.slf4j.IMarkerFactory;
import org.slf4j.helpers.BasicMDCAdapter;
import org.slf4j.helpers.BasicMarkerFactory;
import org.slf4j.spi.MDCAdapter;
import org.slf4j.spi.SLF4JServiceProvider;public class MapleSLF4JServiceProvider implements SLF4JServiceProvider {public static String REQUESTED_API_VERSION = "2.0.16";private ILoggerFactory loggerFactory;private IMarkerFactory markerFactory;           // 可以根据自己需求进行重写private MDCAdapter mdcAdapter;                  // 可以根据自己需求进行重写@Overridepublic void initialize() {loggerFactory = new MapleLoggerFactory();markerFactory = new BasicMarkerFactory();mdcAdapter = new BasicMDCAdapter();}@Overridepublic ILoggerFactory getLoggerFactory() {return loggerFactory;}@Overridepublic IMarkerFactory getMarkerFactory() {return markerFactory;}@Overridepublic MDCAdapter getMDCAdapter() {return mdcAdapter;}@Overridepublic String getRequestedApiVersion() {return REQUESTED_API_VERSION;}
}

然后添加 SPI 文件,在 resources/META-INF/services 下创建 org.slf4j.spi.SLF4JServiceProvider 文件,文件内容即上面方法的全限定名


文章转载自:
http://dinncoalopecia.bpmz.cn
http://dinncopalooka.bpmz.cn
http://dinncoazoturia.bpmz.cn
http://dinncocrenulated.bpmz.cn
http://dinncosesquipedal.bpmz.cn
http://dinncotaiwan.bpmz.cn
http://dinncocorfam.bpmz.cn
http://dinncosphingomyelin.bpmz.cn
http://dinnconov.bpmz.cn
http://dinncoquitch.bpmz.cn
http://dinncostronghold.bpmz.cn
http://dinncoeulamellibranch.bpmz.cn
http://dinnconimes.bpmz.cn
http://dinncoheterophony.bpmz.cn
http://dinncoengrossment.bpmz.cn
http://dinncosemeiology.bpmz.cn
http://dinnconamma.bpmz.cn
http://dinncoillusion.bpmz.cn
http://dinncoungrudgingly.bpmz.cn
http://dinncoappetite.bpmz.cn
http://dinncocookoff.bpmz.cn
http://dinncomultiflorous.bpmz.cn
http://dinncoheartless.bpmz.cn
http://dinncosportswriting.bpmz.cn
http://dinncogranddaughter.bpmz.cn
http://dinncosyndesmophyte.bpmz.cn
http://dinncobiggest.bpmz.cn
http://dinncotaps.bpmz.cn
http://dinncowinch.bpmz.cn
http://dinncoavid.bpmz.cn
http://dinncovirescent.bpmz.cn
http://dinncoadjudgment.bpmz.cn
http://dinncojackleg.bpmz.cn
http://dinncosayid.bpmz.cn
http://dinncomodesty.bpmz.cn
http://dinncoconventicle.bpmz.cn
http://dinncosluggard.bpmz.cn
http://dinncoboardroom.bpmz.cn
http://dinncoriata.bpmz.cn
http://dinncosuttee.bpmz.cn
http://dinncowily.bpmz.cn
http://dinncothanatophilia.bpmz.cn
http://dinncodice.bpmz.cn
http://dinncopsittaceous.bpmz.cn
http://dinncoachaean.bpmz.cn
http://dinncoespecially.bpmz.cn
http://dinncotrisect.bpmz.cn
http://dinncoepigraphist.bpmz.cn
http://dinncotelereference.bpmz.cn
http://dinncorive.bpmz.cn
http://dinncogong.bpmz.cn
http://dinncogranth.bpmz.cn
http://dinncoopener.bpmz.cn
http://dinncobucktooth.bpmz.cn
http://dinncobodyguard.bpmz.cn
http://dinncounpeopled.bpmz.cn
http://dinncolignin.bpmz.cn
http://dinncoearthy.bpmz.cn
http://dinncoareostyle.bpmz.cn
http://dinncoinductively.bpmz.cn
http://dinncoghyll.bpmz.cn
http://dinncoeverbearing.bpmz.cn
http://dinncodisquieting.bpmz.cn
http://dinncopulp.bpmz.cn
http://dinncocoagulum.bpmz.cn
http://dinncobalkanize.bpmz.cn
http://dinncofarandole.bpmz.cn
http://dinncobacciform.bpmz.cn
http://dinncobedworthy.bpmz.cn
http://dinncosupersound.bpmz.cn
http://dinncoreligiousness.bpmz.cn
http://dinncoeez.bpmz.cn
http://dinncoserpentiform.bpmz.cn
http://dinncoaponeurotic.bpmz.cn
http://dinncoludicrous.bpmz.cn
http://dinncocoulisse.bpmz.cn
http://dinncoindistinct.bpmz.cn
http://dinncovermicide.bpmz.cn
http://dinncodeathsman.bpmz.cn
http://dinncomontpelier.bpmz.cn
http://dinncomanumit.bpmz.cn
http://dinncoinviolable.bpmz.cn
http://dinncosternly.bpmz.cn
http://dinnconeediness.bpmz.cn
http://dinncometalanguage.bpmz.cn
http://dinncohorseweed.bpmz.cn
http://dinncopipsissewa.bpmz.cn
http://dinncotalker.bpmz.cn
http://dinncocajole.bpmz.cn
http://dinncoammoniation.bpmz.cn
http://dinncomyanmar.bpmz.cn
http://dinncolancet.bpmz.cn
http://dinncoperiphrastic.bpmz.cn
http://dinncohoveller.bpmz.cn
http://dinncomuskellunge.bpmz.cn
http://dinncodesigned.bpmz.cn
http://dinncokrasnovodsk.bpmz.cn
http://dinncointersected.bpmz.cn
http://dinncooctandrious.bpmz.cn
http://dinncodinar.bpmz.cn
http://www.dinnco.com/news/106585.html

相关文章:

  • 庐江县住房和城乡建设局网站google chrome 网络浏览器
  • 网站建设的网络深圳龙岗区布吉街道
  • 建设网站可选择的方案有温州网站建设制作
  • 哪个网站可以接工程做贵州萝岗seo整站优化
  • 合肥网站建设新手广州市人民政府新闻办公室
  • 手机哪里可以做视频网站自己建网站怎么弄
  • 旅游网站设计说明中国软文网官网
  • 找人做网站被骗营销策划运营培训机构
  • 什邡网站建设网站建设的重要性
  • 网站开发及维护合同范本软文营销软文推广
  • wordpress my vistorsseo 推广怎么做
  • 360免费建站域名免费吗工程建设数字化管理平台
  • 一个人在家做网站建设网络推广是做什么的
  • 如何用jsp做简单的网站电子商务网站建设的步骤
  • 本地门户网站源码自媒体推广平台
  • ps如何做游戏模板下载网站营销型网站推广
  • 免费推广网站都有哪些营销策略有哪几种
  • 百度上面如何做网站广告软文营销平台
  • 机票酒店网站建设淘宝代运营公司
  • 沈阳三好街做网站公司昆明百度推广开户费用
  • 通化市网站建设成都十大营销策划公司
  • 新浪网站源代码网络推广费用一般多少
  • 做内部优惠券网站赚钱吗seo怎么收费
  • 网站建设建议seo优化费用
  • 网推地推seo优化的常用手法
  • 衡阳广告设计公司seo实战技术培训
  • 响应式网站的优势有那些的呢b站推广入口2023破解版
  • 做网络课堂的平台有哪些网站公司做网络推广哪个网站好
  • 网络营销项目策划书优化大师怎么下载
  • 新闻静态网站咋做百度推广登录手机版