Blitz4j - 可伸缩的日志框架

12-11-21 banq
The Netflix Tech Blog: Announcing Blitz4j - a scalable logging framework

传统日志Log4j存在同步锁,严重影响性能:

public
  void callAppenders(LoggingEvent event) {
    int writes = 0;
   for(Category c = this; c != null; c=c.parent) {
     // Protected against simultaneous call to addAppender, removeAppender,...同步锁
      synchronized(c) {
    if(c.aai != null) {
      writes += c.aai.appendLoopOnAppenders(event);
    }
    if(!c.additive) {
      break;
    }
      }
    }

    if(writes == 0) {
      repository.emitNoAppenderWarning(this);
    }
  }
<p>

Blitz4j 使用一个并发数据结构替代了同步锁。

基于内存的配置。

使用executor pool 替代 wait-notify ,将应用和日志更好地隔离。可配置的更好的日志信息流。

在不影响应用性能情况下,能够动态配置log4j的debug级别。

Automatic conversion of any log4j appender to the asynchronous model statically or at runtime.

通过使用Servo和用Archaius.动态配置实时取样测量性能,。

Blitz4j和log4j两者性能对比:

[该贴被banq于2012-11-23 09:48修改过]


    

4
banq
2012-12-06 10:23
新的 log4j 2.0利用了java 5的并发,在尽可能低的层次实现锁,高层次锁影响面太广,解决了很多死锁现象,包括1.x的内存泄漏memory leaks。

其他方面配置更容易,也能和slf4j整合等。

The new log4j 2.0 | Christian Grobmeier Solutions

log4j 2.0下载:http://logging.apache.org/log4j/2.x/

kof99
2013-03-22 16:30
Blitz4j 怎么用?找不到例子,是在log4j配置文件里配置吗?

原来用log4j的项目换成这个需要改代码吗

猜你喜欢