版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、译自:/manual.html翻译人:116982086slf4j用户指南slf4j全称为simple logging facade for java (简单日志门面),作为各种日志框架的简单门面或者抽象,包括 java.util.logging, log4j, logback. slf4j允许用户在部署期间加入自己希望使用的日志系统。slf4能够实现这些这些功能必须依赖于一个jar包,名为slf4j-api-1.7.2.jar.从 1.6.0 如果在类加载路劲上没有找到任何绑定,则slf4j的默认实现为无操作。从 1.7.0 logger接口提供了接受可
2、变参数的打印方法,替换以前的object参数。这个改变意味着slf4j需要jdk需要1.5或以上的版本支持。java编译器内部会把可变参数部分转变为object数组.因此,logger接口编译后的结果在1.7.0 和 1.6.0看来并没有什么区别。hello world依照编程传统,这个例子展示了一个简单方式来使用slf4j输出 hello world. 首先获得一个名为 hello world 的logger。这个logger接着打印日志消息hello world。import org.slf4j.logger;import org.slf4j.loggerfactory;public cl
3、ass helloworld public static void main(string args) logger logger = loggerfactory.getlogger(helloworld.class); (hello world); 要运行这个例子,首先需要下载slf4j依赖包, 然后解压,将 slf4j-api-1.7.2.jar加入classpath中。编译运行这个例子会在控制显示下面信息:slf4j: failed to load class org.slf4j.impl.staticloggerbinder.slf4j: defaulting t
4、o no-operation (nop) logger implementationslf4j: see /codes.html#staticloggerbinder for further details.出现这个警告信息的原因是,在classpath中找不到任何slf4j的实现绑定。一旦将某个实现绑定加入classpath中,这个警告消息就不再出现。假设你将slf4j-simple-1.7.2.jar加入,此时你的classpath包含: slf4j-api-1.7.2.jar slf4j-simple-1.7.2.jar此时在编译运行hellowor
5、ld将会在控制台输出这样的结果:main info helloworld - hello world典型的使用模式下面同样的代码展示了 slf4j 的典型使用模式。注意第15行 -占位符 的使用。更多详细内容请查看faq中的问题 what is the fastest way of logging?1: import org.slf4j.logger; 2: import org.slf4j.loggerfactory; 3: 4: public class wombat 5: 6: final logger logger = loggerfactory.getlogger(wombat.cl
6、ass); 7: integer t; 8: integer oldt; 9:10: public void settemperature(integer temperature) 11: 12: oldt = t; 13: t = temperature;14:15: logger.debug(temperature set to . old temperature was ., t, oldt);16:17: if(value() 50) 18: (temperature has risen above 50 degrees.);19:
7、20: 21: 在部署阶段绑定某个日志框架前面提到过,slf4j 支持多种日志框架。slf4j 发行包中自带几个用于“slf4j绑定”的jar 文件, 每种绑定对应一种支持的日志框架。slf4j-log4j12-1.7.2.jar用于绑定 1.2版的log4j , 这是一个广泛使用的日志系统,当然你还要把log4j包加到classpath中slf4j-jdk14-1.7.2.jar用于绑定 java.util.logging, 作为jdk 1.4 的loggingslf4j-nop-1.7.2.jar用于绑定 nop, 不做任何操作.slf4j-simple-1.7.2.jar用于绑定 sim
8、ple 的实现, 所有的打印会响应到 system.err. 只有info或者更高的级别会被打印. 这个绑定在小型应用中非常有用。slf4j-jcl-1.7.2.jar用于绑定 jakarta commons logging. 这个绑定会使得slf4j 的日志功能委托jcl来完成.还有除了slf4j项目以外提供的绑定包,例如 logback 本身就实现了slf4j。logback的 ch.qos.logback.classic.logger 类实直接实现了slf4j 的 org.slf4j.logger 接口。因此,结合logback使用 slf4j 节省很多内存和计算的开销。要切换日志系统,
9、只需在classpath上替换slf4j的绑定则可。例如,你要从java.util.logging切换到log4j,只需要把 slf4j-jdk14-1.7.2.jar 替换为 slf4j-log4j12-1.7.2.jarslf4j不依赖于任何的特殊类加载器。实际上,每个slf4j绑定都是在编译阶段使用且指定唯一一种日志框架。例如,slf4j-log4j12-1.7.2.jar绑定在编译阶段绑定使用log4j。在你的代码中,除了slf4j-api-1.7.2.jar意外,你只能在classpath中加入一种绑定。不要添加超过1个绑定。下面是这张图解释了总体的思路。(underlying表示直
10、接实现slf4j的接口,adaptation表示通过适配器实现slf4j的接口)slf4j的接口和它的各种适配器是非常简单的。大多数熟悉java语言的开发人员能够在一个小时内阅读和完全理解这些代码。因为slf4j没有使用或者说没有直接访问类加载器,所以关于类加载器的知识不是必须的。因此,slf4j没有类加载器和内存泄露的问题,在方面,common logging就相形见拙了。有了简单明了的slf4j接口和部署模型,对于一个新的日志系统,开发人员可以容易的开发slf4j的绑定。库广泛使用的一些组件会在他们的代码中使用 slf4j 接口,这是以避免强制用户使用某一种日志框架。因此,最终用户可以再部
11、署阶段选择自己喜欢的日志框架并在classpath中加入对应框架的slf4j绑定包。以后,还可以通过替换一个新的slf4j绑定来使用另一种日志框架。这种方案被证明是简单且健壮的。在1.6.0版本中,如果在classpath中没有找到绑定,slf4j-api将会默认忽略所有打印请求。以前,则会因为缺少org.slf4j.impl.staticloggerbinder类而抛出一个 noclassdefounderror的错误,从slf4j 1.6.0器,则会发出一个唯一一次警告信息,说明缺少绑定并且往后的所有答应请求会被忽略。举个实例,wombat框架依赖于slf4j日志功能。为了避免强制最终用户
12、使用某种日志框架,wombat的发布包中包含了slf4j-api.jar且不包含任何绑定包。即便用户在classpath上缺少任何slf4j绑定包,wombat依然能工作。只有在用户决定开启使用日志功能的时候,他才需要安装绑定某种日志框架的slf4j绑定包。项目中的日志功能依赖请注意,任何可嵌入使用的组件例如库或者框架,都不应该声明某个slf4j绑定的具体依赖,只能声明依赖于slf4j-api. 有关slf4j在可嵌入组件中使用的在faq里有相关讨论 logging configuration, dependency reduction and testing.基于maven的传递依赖规则,对
13、于“一般”项目(非库或者框架)来说,声明日志功能的依赖可以通过一条依赖声明完成。logback-classic 如果你希望使用logback-classic 作为日志框架。你只需在pom.xml文件中声明ch.qos.logback:logback-classic依赖(如下所示)。此外,logback-classic-1.0.7.jar 依赖会自动把slf4j-api-1.7.2.jar加载到你的项目。不过明确的声明slf4j-api-1.7.2.jar的依赖并没有错,也避免maven默认的相关版本信息不如你所意。 ch.qos.logback logback-classic 1.0.7log
14、4j 如果你希望使用log4j 作为日志框架。你只需在pom.xml文件中声明org.slf4j:slf4j-log4j12依赖(如下所示)。此外,slf4j-log4j12-1.7.2.jar, 依赖会自动把slf4j-api-1.7.2.jar加载到你的项目。不过明确的声明slf4j-api-1.7.2.jar的依赖并没有错,也避免maven默认的相关版本信息不如你所意。 org.slf4j slf4j-log4j12 1.7.2java.util.logging 如果你希望使用java.util.logging 作为日志框架。你只需在pom.xml文件中声明org.slf4j:slf4j
15、-jdk14依赖(如下所示)。此外,slf4j-jdk14-1.7.2.jar, 依赖会自动把slf4j-api-1.7.2.jar加载到你的项目。不过明确的声明slf4j-api-1.7.2.jar的依赖并没有错,也避免maven默认的相关版本信息不如你所意。 org.slf4j slf4j-jdk14 1.7.2二进制兼容性混用不同版本的slf4j-api.jar 和 slf4j绑定会导致问题。例如,你使用 slf4j-api-1.7.2.jar,然后你必须使用 slf4j-simple-1.7.2.jar,假若你使用了 slf4j-simple-1.5.5.jar 将不能正常工作。不过,
16、从用户的角度来看,所有版本的 slf4j-api 包都是兼容的。客户使用不通版本的slf4j-api-n.jar将不会有任何问题。你只需要保证你的slf4j绑定包的版本要匹配slf4j-api包的版本即可。在初始化阶段,如果 slf4j 检测到 slf4j-api 和 slf4j绑定包的版本冲突,将会发出一个警告。通过slf4j统一日志很多时候,一个项目以来不同的组件,这些组件中依赖的日志api不是slf4j的。一个项目依赖jcl(common logging),java.util.logging, log4j 和 slf4j 的组合是很普遍的。因此,通过一个方式来统一日志则显得很有吸引力。s
17、lf4j 通过提供 jcl,java.util.logging和log4j的桥接来满足这种普遍使用。更详细的内容参考bridging legacy apis.页面。线程映射表(mapped diagnostic context)mdc本质上是日志框架维护的一个map,在应用中提供键值对,这些值可以添加到日志消息中。slf4j支持mdc。如果具体的日志框架提供了mdc功能,那么slf4j就会委托下面的日志框架实现mdc功能。注意,现在只有log4j和logback提供mdc功能。如果具体的日志框架不提供,如java.util.logging,则slf4j将会存储mdc的数据,但是里面的信息需要用
18、户通过代码来获得。因此,作为一个slf4j的用户,你可以利用已有mdc功能的log4j和logback,但是不能强制用户依赖具体的日志框架。更多关于mdc的信息,请查看logback指南中的 mdc 章节行动纲要advantagedescription在部署阶段选择具体的日志框架通过在classpath加入日志框架对应的的slf4j绑定包错误快速响应基于jvm加载累的方式,会很快的执行日志框架绑定验证。如果slf4j不能再classpath找到一个绑定,则会发出一条警告信息,接着后面的所有日志请求就没有具体的操作。绑定流行的日志框架slf4j 支持流行的日志框架, 包括 log4j, java.util.logging, simple logging and nop. logback 本身实现了slf4j桥接遗留的日志api通过slf4j 实现 jcl , 如 jcl-over-slf4j.jar, 使得
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于循环经济的绿色建筑材料研究与应用
- 护理沟通中的语言障碍克服
- 零售业精英:生鲜部经理岗位面试全解析
- 基于人脸识别的身份认证系统应用分析
- 护理案例教学设计课件
- 旅游景点攻略及旅游路线规划
- 2026年全网主流网红推广平台:战略决策型营销生态的深度解析
- 6-6、山东省青岛地区2021-2022学年高一下学期期中语文试题
- 学习计划及未来职业规划
- 统编版道德与法治四年级下册第2课说话要算数 第二课时教学设计
- 2025年山东铁投集团社会公开招聘59人笔试参考题库附带答案详解
- 限额以下小型工程常见安全隐患指导手册(2026版)
- NLRP3炎症小体激活与细胞焦亡的信号关联
- 公路养护工节假日后复工安全考核试卷含答案
- 2025年详版征信报告个人信用报告样板模板新版可编辑
- 2026春招:中国联通笔试题及答案
- TCCIIA0004-2024精细化工产品分类
- 质量环境及职业健康安全三体系风险和机遇识别评价分析及控制措施表(包含气候变化)
- 农业种植基地合作开发和利益分配协议
- 2025年11月近期典型事故案例警示教育
- 卵巢肿瘤病例讨论课件
评论
0/150
提交评论