2012-02-08 15 views
18

Quiero simplemente iniciar sesión en la consola con java.util.logging:java.util.logging para iniciar sesión en la consola

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"); 

pero esto imprime nada. ¿Qué me estoy perdiendo?

Gracias

Respuesta

22

Muy simple, un registrador puede tener varios controladores, con cada uno un nivel diferente.

handler.setLevel(Level.ALL); 
+2

cual plantea la pregunta: ¿qué es el propósito de Logger.setLevel(), si no establece los niveles? – user949300

+0

ConsoleHandler se inicia con el nivel INFO. Los niveles están combinados. Mi opinión personal es que la API de registro no proporciona un _algebra_, un conjunto razonable de operaciones combinables con una semántica bien definida. –

+0

No hay argumento aquí ... – user949300

7

No soy un experto en el registro de Java, pero si cambia log.fine() para log.info() se imprimirá. Hay algo sospechoso en la multa, en la práctica, nunca lo usé. Con suerte, alguien que sabe más puede responder eso.

AÑADIDOS: Sí, la multa es especial. Encontré un earlier SO answer for this:

4

Inicio de sesión en la corriente System.out estándar podría hacer fácilmente mediante la adición de un controlador StreamHandler:

logger.addHandler(new StreamHandler(System.out, new SimpleFormatter())) 
Cuestiones relacionadas