Logback笔记

来源:互联网 发布:上海网络推广招聘 编辑:程序博客网 时间:2024/04/30 10:41
最近启动一个新项目,日志框架打算用Logback来做,取代log4j。所以简单了解了一下Logback,感觉有2点比较突出,首先是性能比较好,其次是配置更加灵活。Logback使用上和log4j很相近,以下总结一下Logback的要点

1. logback分为三个模块:Core、Classic和Access。Core模块是其他两个模块的基础。Classic模块扩展了core模块。Classic模块相当于log4j的显著改进版。Logback-classic直接实现了SLF4J API

2. 如果logger的名称带上一个点号后是另外一个logger的名称的前缀,那么,前者就被称为后者的祖先。如果logger与其后代logger之间没有其他祖先,那么,前者就被称为子logger之父

3. logger L的有效级别等于其层次等级里的第一个非null级别,顺序是从L开始,向上直至根logger

4. 用同一名字调用LoggerFactory.getLogger方法所得到的永远都是同一个logger对象的引用

5. logback可以以任何顺序创建和配置logger,即使父logger是在其后代初始化之后才初始化的,它仍将查找并链接到其后代们

6. Logback简化了logger命名,方法是在每个类里初始化logger,以类的全限定名作为logger名。这种定义logger的方法即有用又直观。可以随意命名logger。但目前已知最好的策略是以logger所在类的名字作为logger名称

7. 如果根logger有一个控制台appender,那么所有启用了的请求都至少会被打印到控制台。如果logger L有额外的文件appender,那么,L和L后代的所有启用了的请求都将同时打印到控制台和文件。设置logger的additivity为false,则可以取消这种默认的appender累积行为

8. Logback支持参数化输出语句
logger.debug("first is {}, second is {}, third is {}",                new Object[]{new Date(), "userName", "password"});

仅当需要作记录时,logger才会格式化消息,替换"{}"。当记录语句被禁用时,不会产生参数构造所带来的性能消耗

9. 默认情况下,appender是可累积的:logger会把记录输出到它自身的appender和它所有祖先的appender。因此,把同一appender关联到多个logger会导致重复输出
原创粉丝点击