Kütüphane Kodundan Giriş Yapmalısınız?


38

Bir Java kütüphanesi geliştiriyorsam, günlük ifadelerini kütüphanenin kodundan çıkarmak iyi bir uygulama mıdır?

Kütüphaneye giriş yapmak hata ayıklamayı ve sorun gidermeyi daha şeffaf hale getirir. Ancak, öte yandan, kütüphane kodumu logging cümleleriyle karıştırmaktan hoşlanmıyorum. Dikkate alınması gereken herhangi bir performans çıkarımı var mı?


Yanıtlar:


33

Evet yapmalısın. SLF4J gibi bir kayıt cephesi kullanmak , kullanıcılarınızı belirli bir kayıt çerçevesiyle zorlamadan size esneklik sağlar.

Yaygın olarak dağıtılmış bileşenlerin ve kütüphanelerin yazarları, bileşenin veya kütüphanenin son kullanıcısına bir kayıt çerçevesi uygulamaktan kaçınmak için SLF4J arayüzüne karşı kod yazabilir. Böylece, son kullanıcı, dağıtım yolunda karşılık gelen slf4j bağını sınıf yoluna ekleyerek istenen kayıt çerçevesini seçebilir, daha sonra var olan bir bağlamayı sınıf yolu üzerindeki bir başkasıyla değiştirmek ve uygulamayı yeniden başlatmak suretiyle değiştirilebilir. Bu yaklaşımın basit ve çok sağlam olduğu kanıtlanmıştır.

Ayrıca, kullanıcılarınız SLF4J kavanoz içermiyorsa ( kullanım kılavuzundan ):

SLF4J sürüm 1.6.0'dan itibaren, sınıf yolunda bağlayıcı bulunmazsa, slf4j-api varsayılan olarak tüm günlük isteklerini atarak işlemsiz bir uygulamaya geçecektir.

Günlüğe kaydetmenin performansla ilgili sonuçlarıyla ilgileniyorsanız, bu SLF4J SSS girişine bakın . Fikir, ifadeleri bir String satır içi içine eklemek yerine günlüklere parametreler sağlamaktır:

Aşağıdaki iki satır aynı çıktıyı verecektir. Bununla birlikte, ikinci form, engelli bir kayıt ifadesi olması durumunda, birinci formun en az 30 faktöre göre daha iyi performans gösterecektir.

logger.debug("The new entry is "+entry+".");
logger.debug("The new entry is {}.", entry);

SLF4J bir başka günlük cephesi mi?

SLF4J kavramsal olarak JCL'ye çok benzer. Bu haliyle, başka bir giriş cephesi olarak düşünülebilir. Bununla birlikte, SLF4J tasarımda daha basittir ve tartışmasız daha sağlamdır. Kısaca, SLF4J sınıf yükleyici veba [Jakarta Commons Logging] rahatsız edici sorunları önlemek.


İşaret edebildiğiniz kitaplık kodu içinde oturum açan iyi bir açık kaynak kitaplığı var mı? Böylece nasıl yapıldığını görebiliriz?
user1870400 16:17

Bahar çerçevesi, bunu yapan oldukça iyi bilinen bir Java kütüphanesidir; onların durumunda JCL'yi seçtiler.
Mike Partridge

17

Evet , kütüphane kodunuzdan giriş yapmalısınız. Sadece geliştirmenize yardımcı olmakla kalmaz, aynı zamanda kütüphaneyi kullanan insanlar da onu faydalı bulacaktır. Günlük düzeylerini her zaman yalnızca ihtiyacınız olan günlük ifadelerini gösterecek şekilde ayarlayabileceğinizi unutmayın - ve aynısını yapabilirler.

Son zamanlarda , açık kaynaklı bir ORM aracı olan Mybatis'i kullanıyordum . Doğru olması gerektiğini düşündüğüm bir sorgunun sonuç döndürmediği bir sorunu ayıklıyordum. Parametreli bir sorundu ve Mybatis kütüphane kodunda oturum açtığından, onu açıp çalışan gerçek sorguyu görebildim. İki parametreyi değiştirdiğimi söylemek kolaydı. Kütüphaneye giriş yapmadan sorunu hemen hemen bulamadım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.