2012-11-22 15 views
5

Sto cercando di ricevere il logger per la mia classe:Come ottenere il logger di una classe in un contesto statico?

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

Ma usando "questo" ci fa "non può essere utilizzata in un contesto statico" errore.

Qualcuno sa come risolvere questo problema?

MODIFICA: Devo essere in grado di accedere al registratore di tutte le classi del mio programma, pertanto lo deve essere pubblico come.

+0

Si sta utilizzando Log4J o 'java.util.logging' (qual è il pacchetto di' Logger')? –

+0

@TomaszNurkiewicz Ho usato 'java.util.logging'. Modificato il mio post ora per chiarirlo. –

risposta

9

Avviso ho cambiato modificatore public-private:

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: Si prega di scrivere il log in lettere maiuscole "LOG" – AlexWien

+0

@AlexWien: beh, in realtà preferisco le lettere minuscole, ma capisco perché dovremmo usare 'LOG' (in maiuscolo). –

+0

1 voto su per il commento di java.util.logging – AlexWien

6

Per org.appache.log4j:

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

Per java.util.logging

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

Nota che apparentemente usa 'java.util.logging' che non accetta' Class' come argomento, solo Stringhe –

+0

Perché pensi che stia usando java.util.Logging; La maggior parte utilizza org.appache Log4j – AlexWien

+0

Non è del tutto evidente che stia usando java.util.logging – Perception

Problemi correlati