SLF4J ile yer tutucularla istisna ve mesaj nasıl kaydedilir


85

SLF4J kullanarak hem bir hata mesajını hem de bir istisnayı günlüğe kaydetmek için doğru yaklaşım nedir ?

Bunu yapmayı denedim, ancak istisna yığın izi asla yazdırılmadı:

logger.error("Unable to parse data {}", inputMessage, e);

Bu durumda , istisna yığın izleme oturumunu kapatmanın yanı sıra {}ile doldurmak istiyorum inputMessage.

Bunu yapmanın tek yolu şunu yapmak olabilir:

logger.error("Unable to parse data " + inputMessage, e);

bu hiç hoş değil.


İlk logger.error satırınız slf4j 1.7.25 sürümünde istediğiniz gibi çalışır.
kiml42

Yanıtlar:


132

SLF4J sürüm 1.6'dan itibaren, SLF4J son parametreyi istediğiniz gibi, yani bir istisna olarak yorumlayacaktır. SLF4J API'nin eski bir sürümünü kullanıyor olmalısınız.


7
Bu Javadoc'ta anlatılıyor mu? Burada benzer bilgileri bulmayı bekliyordum: slf4j.org/apidocs/org/slf4j/Logger.html
Scot

2
Sana inanıyorum, ama @Scot gibi, bu davranışın belgeleneceğini umuyordum.
Stephan

4
Scot, @Stephan - aformentioned davranış onların SSS belgelenen gibi görünüyor burada .
Priidu Neemre

8
Bu en iyi saklanan bir sır gibi. Gösterdiğiniz için teşekkürler. Sonraki sorum, bunun bir var-arg'de mümkün olduğu gerçeğini neden saklasınlar? Neden Throwableve sonrasında var-arg olan yeni bir aşırı yüklenmiş yöntem yaratamıyorlar? Silme sorunları var mı? Bu, diğer kütüphanelerde istisnanın son argüman olarak iletildiği bir standart mı?
gaoagong

7
Bu (o zamandan beri?) SSS: slf4j.org/faq.html#paramException'da belgelenmiştir . Bu özelliğin daha net bir şekilde belgelenmesi gerektiğini kabul ediyorum.
Stephan202
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.