Blitz4j - 可伸縮的日誌框架

banq發表於2012-11-21
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 class="indent">


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修改過]

相關文章