2014-06-12 14 views
14

AsyncAppender'ın ekleme işini ayrık bir iş parçacığında yapmasını anlıyorum. Bu amaç için ArrayBlockingQueue kullanıyorlar.Log4j2'de Asynclogger ve AsyncAppender arasındaki fark

VE

AsyncLogger diğer konuya bir uygulama iplikten günlüğü olay taşımak için LMAX bölücü kütüphanesini kullanır ve AsyncAppender comapred olarak hızlıdır.

Sorum, AsyncLogger tarafından daha verimli bir şekilde gerçekleştirilirse, neden Log4j2'de AsyncAppender'ımız var.

AsyncAppender'ı AsyncLogger ile birlikte kullanırsak? AsyncLogger ve AsyncAppender arasında daha fazla fark var mı?

cevap

13

Doğru, neredeyse aynı amaca ulaşıyorlar, bu yüzden sorunuzu anlayabiliyorum: "neden her iki seçenek de var"?

Arka plan için, AsyncAppender başlangıçtan Log4j2'ye girmiştir, geçen yıl Mart ayında Async Loggers eklenmiştir (2014). Mevcut durum böyle oldu.

Log4j takımı AsyncAppender'ı şu anda kaldırmayı ciddi olarak düşünmüyor. AsyncAppender'ın sadece log4j2-api ve log4j2-core kavanozlarla çalıştığı Async Loggers'ın harici bir bağımlılığa (LMAX bozucu kavanozu) sahip olması akılda tutulması gereken bir husustur.

Son sorunuzu cevaplamak için AsyncAppender'ı Async Loggers ile birleştirmek mümkündür, ancak hiçbir şey elde edemezsiniz. Bu test edilmedi. Kontrol etmedim, ancak Async Logger dizisinden AsyncAppender iş parçacığına günlük olayını teslim ederken kaybolduğunda konum bilgilerinin kaybolması ile ilgili bir sorun olabilir. Bunu yapmamanızı tavsiye etmem.

UPDATE (2014/6/23): Bazı testler yaptım ve AsyncAppender'ı AsyncLoggers ile birleştirmeyle ilgili birkaç sorun vardı. Bunlar RC2'de sabitlenmiştir. Bunu yapmamanızı tavsiye etmiyorum, çünkü hiçbir şey yapmadan CPU/bellek kullanan başka bir ara adım ekliyor.

UPDATE (2016/7/20): Başka bir fark: sürüm 2.6'dan beri, Log4j 2 Async Loggers ile çöpsüz olabilir, ancak AsyncAppender ile birlikte kullanılamaz.

aşağıdaki yorum ikinci soruya yanıt olarak

: AsyncAppender AsyncLoggers kuyrukta için LMAX engelleyici aygıtı Ringbuffer kullanın ve bir Yürüten parçacığı kullanan kendi kuyruğunu ve iplik vardır.

+0

Teşekkürler Remko.i async logger için bozucu jar.AsyncAppender seprate thread asynclogger append yöntemini yürütmek için teşekkür ederiz.Is AsyncLogger da seprate iplik veya farklı bir şey append yöntemi uygulamak. –