2010-11-27 26 views
5

Tengo un programa Java que usa una biblioteca externa. El programa principal usa log4j para registrar sus mensajes y la biblioteca usa java.util.logging.Cómo redirigir java.util.logging a un archivo?

Mi problema es que los mensajes de registro de la biblioteca externa y el programa principal se mezclan en la consola.

Me gustaría redirigir todos los mensajes de registro de la biblioteca externa a un archivo. Traté de hacer eso con un archivo logging.properties:

handlers= java.util.logging.FileHandler 
.level= INFO 
java.util.logging.FileHandler.pattern = foo.log 
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter 

Este archivo se inicializa con:

System.setProperty("java.util.logging.config.file", "logging.properties"); 

Desafortunadamente, los mensajes de registro de la biblioteca externa siguen apareciendo en la consola. ¿Debo usar algo como slf4j para interceptar los mensajes de registro de java.util.logging?

Gracias por su tiempo.

+0

duplicado de http://stackoverflow.com/questions/751736/how-to-get-java-logger-output-to-file-by-default –

Respuesta

11

Aquí hay un código de uno de mis programas. Esto también hace rotación automática. La clase de configuración es la mía que se lee desde un archivo de propiedades. Puedes simplemente reemplazar eso con tus propios valores.

Logger rootLogger = Logger.getLogger(""); 
logHandler = new FileHandler(config.getLogFile(), 
          config.getLogRotateSize()*1024*1024, 
          config.getLogRotateCount(), false); 
logHandler.setFormatter(new SimpleFormatter()); 
logHandler.setLevel(Level.INFO); 
rootLogger.removeHandler(rootLogger.getHandlers()[0]); 
rootLogger.setLevel(Level.INFO); 
rootLogger.addHandler(logHandler); 

Tenga en cuenta que esto es para un programa independiente. Cualquier servidor de aplicaciones tiene sus propias herramientas de configuración de registro. El programa también puede cambiar el formateador y los niveles sobre la marcha si se desea un modo de depuración dinámica.

+0

¡Gracias, esto funcionó perfectamente! – gulbrandr

Cuestiones relacionadas