2012-11-22 12 views
5

benim sınıf için logger alma için çalışıyorum: "Bu" Orada neden kullanılarakBir sınıfın logger'ını statik bir bağlamda nasıl alabilirim?

public static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(this); 

Ama hata "statik bir bağlam içinde bu kullanamazsınız".

Bunu nasıl düzelteceğini bilen var mı?

DÜZENLEME: Programımdaki tüm sınıflardan kaydediciye erişebilmem gerekir, böylece 'un herkese açık olması gerekir. org.appache.log4j için

+0

Eğer Log4J kullanıyorsunuz veya java.util.logging' ('Logger'ın paketi nedir?)? –

+0

@TomaszNurkiewicz Ben java.util.logging' kullanılır. Bunu açıklığa kavuşturmak için şimdi gönderimi düzenledim. –

cevap

9

Uyarı:

public class FooBar { 

    private static final Logger log = Logger.getLogger(FooBar.class); 

    //or (if you are using java.util.logging): 

    private static final Logger log = Logger.getLogger(FooBar.class.getName()); 


} 
+1

checkstyle: Lütfen yazınız. Sermaye Yazıları "LOG" – AlexWien

+0

@AlexWien: Aslında, aslında küçük harfleri tercih ediyorum, ama neden anlamalıyız? LOG '(büyük harflerle). –

+0

1 java.util.logging – AlexWien

6

: Ben private için public den değiştirici değiştirdi java.util.logging

için

private static final Logger LOG = Logger.getLogger(MyClass.class); 

private static final Logger LOG = Logger.getLogger(MyClass.class.getName()); 
+0

Görünüşe göre 'java.util.logging' işlevini 'Class' argüman olarak kabul etmiyor, sadece Strings –

+0

kullanıyor. Neden java.util.Logging kullanıyor olduğunu düşünüyorsunuz; En çok kullanılan org.appache Log4j – AlexWien

+0

O java.util.logging – Perception

İlgili konular