2KB项目,专业的源码交易网站 帮助 收藏 每日签到

从Log4j迁徙到LogBack的来由

  • 时间:2019-03-14 13:55 编辑:2KB 来源:2KB.COM 阅读:582
  • 扫一扫,手机访问
  • 分享
摘要:
logback LOG4J 英文原文:Reasons to prefer logback over log4j

不管从设计上仍是完成上,Logback绝对log4j而言有了绝对多的改良。不外虽然难以逐个细数,这里仍是罗列部分来由为何选择logback而不是log4j。服膺logback与log4j在观点上面是很类似的,它们都是有统一群开辟者树立。所以假如你曾经对log4j很熟习,你也能够很快上手logback。假如你爱好运用log4j,你或许会迷上运用logback。

更快的履行速度

基于我们先前在log4j上的任务,logback 重写了外部的完成,在某些特定的场景上面,乃至可以比之前的速度快上10倍。在包管logback的组件愈加疾速的同时,同时所需的内存愈加少。

充沛的测试

Logback 历经了几年,数不清小时数的测试。虽然log4j也是测试过的,可是Logback的测试愈加充沛,跟log4j不在统一个级别。我们以为,这恰是人们选择Logback而不是log4j的最主要的缘由。人们都盼望即便在卑劣的前提下,你的日志框架仍然波动而牢靠。

logback-classic 十分天然的完成了SLF4J

logback-classic中的登岸类天然的完成了SLF4J。当你运用 logback-classic作为底层完成时,触及到LF4J日志系统的问题你完整不需求思索。更进一步来讲,因为 logback-classic激烈建议运用SLF4J作为客户端日志系统完成,假如需求切换到log4j或许其他,你只需求交换一个jar包便可,不需求去改动那些经过

SLF4J API 完成的代码。这可以大大减少改换日志系统的任务量。

扩大文档

Logback附带具体的和不时更新的文档。

运用XML设置装备摆设文件或许Groovy

设置装备摆设logback的传统办法是经过XML文件。在文档中,大部分例子都是是用XML语法。可是,关于logback版本0.9.22,经过Groovy编写的设置装备摆设文件也失掉支撑。比拟于XML,Groovy作风的设置装备摆设文件愈加直观,连接和简洁的语法。

如今, 曾经有一个Tools主动把logback.xml文件迁徙至logback.groovy

主动从头载入设置装备摆设文件

Logback-classic可以在设置装备摆设文件被修正后,主动从头载入。这个扫描进程很快,无资本争用,而且可以静态扩大支撑在上百个线程之间每秒上百万个挪用。它和使用Server联合杰出,而且在JEE情况通用,由于它不会挪用创立一个独自的线程来做扫描。

优雅地从I/O过错中恢复

FileAppender和它的子类,包含RollingFileAppender,可以优雅的从I/O过错中恢复。所以,假如一个文件Server暂时宕机,你不再需求重启你的使用,而日记功用就可以正常任务。当文件Server恢停工作,logback相干的appender就会通明地和疾速的从上一个过错中恢复。

主动肃清旧的日记归档文件

经过设置TimeBasedRollingPolicy 或许 SizeAndTimeBasedFNATP的 maxHistory 属性,你就能够把持日记归档文件的最大数目。假如你的回滚战略是每个月回滚的,而且你盼望保管一年的日记,那末只需容易的设置maxHistory属性为12。关于12个月之前的归档日记文件将被主动肃清。

主动紧缩归档日记文件

RollingFileAppender可以在回滚操纵中,主动紧缩归档日记文件。紧缩凡是是异步履行的,所以即便是很大的日记文件,你的使用都不会因而而被梗阻。

慎重形式

慎重形式中,在多个JVM中运转的多个FileAppender实例,可以平安的写入一致个日记文件。慎重形式可以在必定的限制前提下使用于RollingFileAppender。

Lilith

Lilith是logback的一个记载和拜访事情检查器。它相当于log4j的 chainsaw,可是Lilith设计的目标是处置大量的日记记载。


设置装备摆设文件中的前提处置

开辟者凡是需求在分歧的目的情况中变换logback的设置装备摆设文件,例如开辟情况,测试情况和生产情况。这些设置装备摆设文件大要是一样的,除某部分会有分歧。为了不反复,logback支撑设置装备摆设文件中的前提处置,只需运用<if>,<then>和<else>,那末统一个设置装备摆设文件就能够在分歧的情况中运用了。

过滤

Logback具有远比log4j更丰厚的过滤才能。例如,让我们假定,有一个相当主要的贸易使用安排在生产情况。思索到大量的买卖数据需求处置,记载级别被设置为WARN,那末只要正告和过错信息才会被记载。如今,想象一下,你在开辟情况碰到了一个臭虫,可是在测试平台中却很难发明,由于一些情况之间(生产情况/测试情况)的未知差别。

运用log4j,你只能选择在生产系统中下降记载的级别到DEBUG,来测验考试发明问题。可是很不幸,这会生成大量的日记记载,让剖析变得艰苦。更主要的是,过剩的日记记载会影响到生产情况的功能。

运用logback,你可以选择保存只一切用户的WARN级此外日记,而除某个用户,例如Alice,而她就是问题的相干用户。当Alice登录系统,她就会以DEBUG级别被记载,而其他用户依然是以WARN级别来记载日记。这个功用,可以经过在设置装备摆设文件的XML中添加4行。请在相干章节中查找MDCFilter

SiftingAppender

SiftingAppender是一个万能的追加器。它可以基于任何给定的及时属性离开(或许挑选)日记。例如,SiftingAppender可以基于用户会话离开日记事情,如许,可认为每个用户树立一个自力的日记文件。

仓库轨迹信息包括包的数据

当logback打印一个异常,仓库轨迹信息将包括包的相干数据。下面是一个经过 logback-demo 生成的仓库信息:

14:28:48.835 [btpool0-7] INFO  c.q.l.demo.prime.PrimeAction - 99 is not a valid value
java.lang.Exception: 99 is invalid
  at ch.qos.logback.demo.prime.PrimeAction.execute(PrimeAction.java:28) [classes/:na]
  at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) [struts-1.2.9.jar:1.2.9]
  at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) [struts-1.2.9.jar:1.2.9]
  at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) [struts-1.2.9.jar:1.2.9]
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) [servlet-api-2.5-6.1.12.jar:6.1.12]
  at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502) [jetty-6.1.12.jar:6.1.12]
  at ch.qos.logback.demo.UserServletFilter.doFilter(UserServletFilter.java:44) [classes/:na]
  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1115) [jetty-6.1.12.jar:6.1.12]
  at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:361) [jetty-6.1.12.jar:6.1.12]
  at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417) [jetty-6.1.12.jar:6.1.12]
  at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230) [jetty-6.1.12.jar:6.1.12]

从上面的信息,你可以发明这个使用运用Struts 1.2.9 并且是运用 jetty 6.1.12安排的。所以,仓库轨迹信息将疾速的通知读者,关于异常发作的类另有包和包的版本。当你的客户发送一个仓库轨迹信息给你,作为一个开辟职员,你就不需求让他们通知你他们正在运用的包的版本。这项信息曾经包含在仓库轨迹信息中。具体请参考  "%xThrowable" conversion word.

这项功用可以十分有协助的阐明,有点用户误认为这是IDE的功用

Logback-access模块,供给了经过HTTP拜访日记的才能,是logback不成或缺的构成部分

最初但绝非最不主要的是,作为logback宣布包的一部分,logback-access模块可与Jetty或许Tomcat实行集成,供给了十分丰厚而弱小的经过HTTP拜访日记的功用。由于logback-access模块是logback早期设计计划中的一部分,因而,一切你所爱好的logback-classic模块所供给的全体特征logback-access异样也具有。

完毕语

我们给出了很多选择logback而不选择log4j的来由。简而言之,既然logback构建于我们先前所构建的log4j之上,logback可以说就是一个更好的log4j。

本文中的一切译文仅用于进修和交换目标,转载请务必注明文章译者、出处、和本文链接。 2KB翻译任务按照 CC 协定,假如我们的任务有进犯到您的权益,请实时联络我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部