博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
日志选用问题
阅读量:6497 次
发布时间:2019-06-24

本文共 1601 字,大约阅读时间需要 5 分钟。

hot3.png

日志选用问题

Slf4j+*,Commons Logging+Log4j组合是目前java项目开发常用的方案。

1.目前常用的集中日志框架

slf4j(Simple Logging Facade for Java)    是一套简易Java日志门面,本身并无日志的实现,slf4j是门面模式的典型应用。Commons Logging    Apache基金会所属的项目,是一套Java日志接口,之前叫Jakarta Commons Logging(JCL),后更名为Commons Logging。Log4j    Apache Log4j是一个基于Java的日志记录工具,是Apache软件基金会的一个项目。Log4j2    Apache Log4j 2是apache开发的一款Log4j的升级产品,与Log4j不兼容。Logback    一套日志组件的实现(Slf4j阵营),据称性能非常高。Logback和Slf4j是同一个作者。    Logback声称:某些关键操作,比如判定是否记录一条日志语句的操作,其性能得到了显著的提高。这个操作在Logback中需要3纳秒,而在Log4J中则需要30纳秒。LogBack创建记录器(logger)的速度也更快:13毫秒,而在Log4J中需要23毫秒。更重要的是,它获取已存在的记录器只需94纳秒,而Log4J需要2234纳秒,时间减少到了1/23。跟JUL相比的性能提高也是显著的。Jul (Java Util Logging)    自Java1.4以来的官方日志实现。

2.slf4j

Slf4j与其它日志组件调用关系图

3.Slf4桥接遗留的api

在实际环境中我们经常会遇到不同的组件使用的日志框架不同的情况,例如Spring Framework使用的是日志组件是Commons Logging,XSocket依赖的则是Java Util Logging。当我们在同一项目中使用不同的组件时应该如果解决不同组件依赖的日志组件不一致的情况呢?现在我们需要统一日志方案,统一使用Slf4j,把他们的日志输出重定向到Slf4j,然后Slf4j又会根据绑定器把日志交给具体的日志实现工具。Slf4j带有几个桥接模块,可以重定向Log4j,JCL和java.util.logging中的Api到Slf4j。log4j-over-slf4j-version.jar	将Log4j重定向到Slf4jjcl-over-slf4j-version.jar	将Commons Logging里的Simple Logger重定向到slf4jjul-to-slf4j-version.jar	将Java Util Logging重定向到Slf4j

4.在使用Slf4j桥接时要注意避免形成死循环

1)log4j-over-slf4j.jar和slf4j-log4j12.jar同时存在    由于slf4j-log4j12.jar的存在会将所有日志调用委托给log4j。但由于同时由于log4j-over-slf4j.jar的存在,会将所有对log4j api的调用委托给相应等值的slf4j,所以log4j-over-slf4j.jar和slf4j-log4j12.jar同时存在会形成死循环2)jul-to-slf4j.jar和slf4j-jdk14.jar同时存在    由于slf4j-jdk14.jar的存在会将所有日志调用委托给jdk的log。但由于同时jul-to-slf4j.jar的存在,会将所有对jul api的调用委托给相应等值的slf4j,所以jul-to-slf4j.jar和slf4j-jdk14.jar同时存在会形成死循环

参照原文

转载于:https://my.oschina.net/dajianguo/blog/2963174

你可能感兴趣的文章
{好文备份}SQL索引一步到位
查看>>
(转)径向模糊效果shader
查看>>
【原创】Kakfa utils源代码分析(三)
查看>>
51单片机实现对24C02进行页写、顺序读取并显示验证
查看>>
java加密解密
查看>>
将日期yyyy-MM-dd转为数字大写的形式
查看>>
全面分析再动手的习惯:链表的反转问题(递归和非递归方式)
查看>>
奇怪吸引子---QiChen
查看>>
ArcEngine中的缩放地图
查看>>
yield学习续:yield return迭代块在Unity3D中的应用——协程
查看>>
手机触屏滑动图片切换插件swiper.js
查看>>
LeetCode - Maximum Depth of Binary Tree
查看>>
把数据库中有关枚举项值的数字字符串转换成文字字符串
查看>>
基于html5海贼王单页视差滚动特效
查看>>
JavaScript变换表格边框颜色
查看>>
BIZTALK项目中WEB引用WEBSERVICES服务时候报错
查看>>
我常用的那些linux命令
查看>>
QT 5.4.1 for Android Ubuntu QtWebView Demo
查看>>
友盟自动更新
查看>>
OSD的主要实现方法和类型(转)
查看>>