【良少的专栏】

余好读书,乐思善疑。有过目不忘之能,亦有掩卷即忘之病,故尝攥文以记之。

沈东良
沈东良的公告

遭遇骗子恶意欺诈,奋战中!!!

最近评论
hery138:很有用的资料,谢谢~~~~~
zhangkai08111:真的不是很清楚。。。。
比如从页面到数据库。
从数据库到页面出现的问题很多。
shendl:漏了“插件说明”部分,现在发上来了http://blog.csdn.net/shendl/archive/2008/08/21/2805213.aspx
shendl:本系列文章有了开源项目springosginodm,地址:http://code.google.com/p/springosginodm/
shendl:本系列出了第二篇文章了:《OSGI服务发布和导入的自主实现》
—OSGI+Spring+Hibernate+...完美解决方案[非SpringDM]之二
http://blog.csdn.net/shendl/archive/2008/08/06/2778806.aspx
文章分类
收藏
    相册
    blog图片
    我的照片
    推荐Blog
    CSDN专家群(RSS)
    博客周刊(RSS)
    张孝祥专栏(RSS)
    我的CSDN作家区
    杨洪波(RSS)
    许式伟的专栏(RSS)
    谭振林(RSS)
    银狐999(RSS)
    阿蒙专栏(RSS)
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 使用Slf4j取代Apache Common-Logging编写日志收藏

    新一篇: 最强烈抗议长城防火墙屏蔽SourceForge网站! | 旧一篇: 主流编程语言优劣考

     

                         使用Slf4j取代Apache Common-Logging编写日志
     
     
     
     
     
    Apache Common-Logging是广泛使用的Java日志门面库。我以前一直都使用它和log4j编写日志。
    Apache Common-Logging通过动态查找的机制,在程序运行时自动找出真正使用的日志库。
    Apache Common-Logging一直都运作得很好。直到最近,我写OSGI插件时,它不能工作了。
    原因是Apache Common-Logging使用了ClassLoader寻找和载入底层的日志库。而OSGI中,不同的插件使用自己的ClassLoader。
    一个线程的ClassLoader在执行不同的插件时,其执行能力是不同的。
    OSGI的这种机制保证了插件互相独立,然而确使Apache Common-Logging无法工作!
     
    解决之道是使用新的日志门面库Slf4j。
    Slf4j库类似于Apache Common-Logging。但是,他在编译时静态绑定真正的Log库。使用Slf4j时,如果你需要使用某一种日志实现,那么你必须选择正确的Slf4j的jar包的集合。
    这确实麻烦了一点,但总算可以在OSGI中开发日志了。
     
    其实,这一点点工作也不算麻烦。
     
     
     
     
     
    使用CommonLog接口而实际由Slf4j和Log4j实现的过程
    1,项目中照常使用
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    编写日志。
     
     
    2,仍然在src下使用log4j.properties文件进行配置。
     
    3,使用的所有jar文件:
    1)log4j-1.2.15.jar 这是log4j的库。 Slf4j并不改变这个底层实现库。
    2)slf4j-api-1.5.2.jar   这是Slf4j库。 
    3)slf4j-log4j12-1.5.2.jar 这包含Log4j的适配器和静态绑定log4j底层实现。
    4)jcl-over-slf4j-1.5.2.jar 这提供了Commons-Logging接口,以及使用common-loggin的接口,底层还是由SLF4J来决定哪种实现机制 。
     
        这里,我们需要使用Log4j的原生库,但是不需要Commons-Logging的原生库。
     
     
    OK,把上面这4个jar包复制到lib下,导入项目中,就可以像以往一样继续使用Apache Common-Logging编写日志了。
     
     
    如果你喜欢使用slf4j的门面类,或者非log4j的日志实现库。只需要像上面把需要的jar包扔进自己的项目即可!
     
     
     
     
     
     

    发表于 @ 2008年07月02日 18:33:27|评论(loading...)|收藏

    新一篇: 最强烈抗议长城防火墙屏蔽SourceForge网站! | 旧一篇: 主流编程语言优劣考

    评论

    #Sunny921103 发表于2008-07-04 07:47:51  IP: 124.237.39.*
    开发项目我一般都用 log4j, 感觉还可以,但我对新东西更感兴趣。slf4j和log4j相比有什么优点吗?或者说他们有什么区别?谢谢了!
    #shendl 发表于2008-07-04 10:36:28  IP: 211.144.96.*
    slf4j和Apache Common-Logging一样,都是日志的门面
    。我底层也是用log4j写日志的。
    slf4j就是一个外套,方便替换底层的日志实现。
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 沈东良