2012-02-08 12 views
18

voglio semplicemente per accedere alla console utilizzando java.util.logging:Utilizzando java.util.logging per accedere alla console

Logger log = Logger.getLogger("my.logger"); 
log.setLevel(Level.ALL); 
ConsoleHandler handler = new ConsoleHandler(); 
handler.setFormatter(new SimpleFormatter()); 
log.addHandler(handler); 
log.fine("hello world"); 

ma questo viene stampato nulla. Cosa mi manca?

Grazie

risposta

22

Molto semplice, un logger può avere diversi gestori, con ciascuno un diverso livello.

handler.setLevel(Level.ALL); 
+2

che pone la domanda: proprio quello che è lo scopo della Logger.setLevel(), se non imposta i livelli? – user949300

+0

ConsoleHandler inizia con il livello INFO. I livelli sono combinati. La mia opinione personale è che l'API di registrazione non fornisce un _algebra_, un insieme sensato di operazioni combinabili con semantica ben definita. –

+0

Nessun argomento qui ... – user949300

7

Non sono un esperto la registrazione Java, ma se si cambia log.fine() per log.info() verrà stampata. C'è qualcosa di sospettoso, in pratica, non l'ho mai usato. Spero che qualcuno che ne sa di più possa rispondere.

aggiunto: Sì, va bene è speciale. Ho trovato un earlier SO answer for this:

4

registrazione sul flusso standard di System.out potrebbe essere fatto facilmente con l'aggiunta di un gestore StreamHandler:

logger.addHandler(new StreamHandler(System.out, new SimpleFormatter())) 
Problemi correlati