首页 » java » 正文

浅谈Java日志框架(slf4j, logback, common logging, log4j)

老一代的系统基本使用的都是common logging和log4j的组合,common logging使用Fascade设计模式实现,门面后面可以转接除了log4j等其他多种日志实现,后来,log4j的作者Ceki看到这套实现在一些细节上的缺陷,于是,又开发了slf4j和logback, 但是他们并不属于Apache组织,slf4j用来取代common logging,而logback用来取代log4j。

slf4j相对于common logging有了很大的改进,修复了common logging的类加载问题,在使用方面最著名的改进就是增加了参数化的日志,使我们在打印复杂日志内容的时候不再需要判断是否响应级别已经打开,也就是不再需要if (logger.isDebugEnabled()) {……}等代码,使代码变得美观清晰易读。

logback相对于log4j最大的提升就是效率,logback对log4j内核进行了重写和优化,在一些关键执行路径上性能提升10倍以上。而且logback不仅性能提升了,初始化内存加载也更小了。

下面是使用logback的性能测试结果:

1. 使用logBack的同步记录日志大概是15KTPS。
2. 使用logBack的AsyncAppender异步记录日志大概是17KTPS(波动较大),异步记录日志内部使用BlockingQueue+同步IO实现。
3. 用disruptor的缓冲替换BlockingQueue, 记录日志达到30KTPS。
4. 关掉日志可以达到50KTPS。

本文共 1 个回复

Comments are closed.