`
yangbb
  • 浏览: 33325 次
  • 来自: ...
社区版块
存档分类
最新评论

logback初入

    博客分类:
  • java
 
阅读更多
最近想推动项目组在新产品/新项目上使用logback,于是打算了解下logback
1.官方手册 http://logback.qos.ch/manual/,介绍的非常详细。
2.基本上只需要引入如下三个jar,就可以满足与log4j类似的日志特性了。
logback-classic-1.1.8.jar
logback-core-1.1.8.jar
slf4j-api-1.7.22.jar

3.翻阅了下源码进行了初步梳理

4.下一步打算通过阅读官方手册+阅读源码,整理一份配置文件的sample
//TODO

5.logback与log4j callAppender方法的差异分析

    a.log4j的callAppender方法对for循环中获取的logger使用synchronize关键字进行修饰;   logback中没有使用sychronized
    b.log4j和logback的addAppender/removeAppender方法都有sychronized关键字进行修饰;logback的detachAppender没有使用synchronized关键字修饰
    c.log4j使用Vector存放appender;logback使用CopyOnWriteArrayList存放appender
    d.log4j在callAppender方法中如果不使用synchronized,则并发情况下会持续其他线程调用addAppender/removeAppender等方法,改变Vector中存放的appener。由于遍历appender使用的是for(int i...),会导致出现越界(数组变小)或者未能访问后续增加的appender
    e.log4j由于对Logger使用了synchronized修饰,当多个线程并发访问同一个logger时,会出现等待锁的情况,存在性能风险
    f.logback因为使用CopyOnWriteArrayList存放appender,且遍历appender使用的是foreach,可以避免出现越界(数组变小)和未能方位后续追加成果的appender。
    g.CopyOnWriteArrayList的iterator返回的是COWIterator对象,每次的hasNext都是使用构造时传入的数组对象(addIfAbsent和remove执行成果后会改变这个数组)的length跟cursor进行判断,故可以避免越界风险,也可以避免没有及时访问到新追加成功的元素(appender)

ps:

       a.log4j在初始化时,通过LogManager创建了一个Hierarchy实例,所有的logger都存放在Hierarchy的HashTable中,并根据包路径层次关系构建父子关系
       b.logback通过StaticLoggerBinder初始化获取单实例,并通过其defaultLoggerContext属性来指向LoggerContext实例,所有的logger都存放在LoggerContext的ConcurrentHashMap中,并根据包路径层次关系构建父子关系
  • 大小: 137 KB
分享到:
评论

相关推荐

    Slf4j+logback实现logback测试

    Slf4j+logback实现logback测试,Slf4j+logback实现logback测试

    Logback类库含logback.xml配置文件

    该压缩包包含 logback类库所包含的jar包以及logback.xml配置文件(放到 src 目录),用于开发学习使用。

    logback下载 日志文件jar包

    内置三个jar包 一个配置文件 logback.txt logback-classic-1.2.3.jar logback-core-1.2.3.jar slf4j-api-1.7.26.jar

    logback.的jar包

    此zip包含logback-access-1.2.3和logback-classic-1.2.3和logback-core-1.2.3

    logback-core-1.2.10-API文档-中文版.zip

    赠送jar包:logback-core-1.2.10.jar; 赠送原API文档:logback-core-1.2.10-javadoc.jar; 赠送源代码:logback-core-1.2.10-sources.jar; 赠送Maven依赖信息文件:logback-core-1.2.10.pom; 包含翻译后的API文档...

    logback.jar包

    日志组件logback jar包,logback-access-1.1.3.jar logback-classic-1.1.3.jar logback-core-1.1.3.jar slf4j-api-1.7.12.jar

    logback-1.0.1

    logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-classic完整实现SLF4J API使你可以很方便...

    logback jar包和logback.xml配置文件打包下载 小白新手学Java

    slf4j-api-1.7.26.jar logback-core-1.2.3.jar logback-classic-1.2.3.jar logback.xml

    LogBack 中文开发手册

    Logback 中文手册,清晰版. 简单地说,Logback 是一个 Java 领域的日志框架。它被认为是 Log4J 的继承人。 Logback 主要由三个模块组成: logback-core logback-classic logback-access

    LogBack配置文件

    LogBack配置文件,主要包括LOGBack的配置文件内容

    logback通用xml配置

    用于logback框架通用xml配置文件

    logback配置文件放入resource

    logback配置文件放入resource

    logback日志框架所需要的jar包

    包含logback所需:logback-classic-1.1.7.jar、logback-classic-1.1.7-sources.jar、logback-core-1.1.7.jar、logback-core-1.1.7-sources.jar、slf4j-api-1.7.21.jar、slf4j-api-1.7.21-sources.jar

    logback-ext-spring-0.1.1

    logback与spring集成的文件,从官网上找的。上传的文件包括源文件和jar包,以下是连接: https://github.com/qos-ch/logback-extensions/wiki/Spring ...

    logback日志的jar包和配置介绍

    logback日志的jar包和配置介绍:logback-classic-1.1.2.jar、logback-core-1.1.2.jar、slf4j-api-1.7.7.jar、logback.xml、rsframework.properties

    logback-core-1.2.9.jar

    logback-core-1.2.9.jar

    logback-ext-spring

    spring使用logback的扩展,使用起来非常方便。在web.xml中配置: <param-name>logbackConfigLocation <param-value>/WEB-INF/conf/logback.xml <listener-class>ch.qos.logback.ext.spring.web....

    logback类库.rar

    logback类库.rar

    logback中文文档pdf

    logback中文文档pdf

    Logback所需的jar包

    免费获取Logback所需的jar包 打包合集 让你少走弯路 一.logback简介 1.logback: Logback是由log4j创始人设计的另一个开源日志组件。(好的日志记录方式可以提供我们足够多的定位错误的依据)。 2.主要有三个模块...

Global site tag (gtag.js) - Google Analytics