versiones tool tengo removal registros puedo obsoletas las han eliminar desinstalar desinstalado desinstala descargar como java java.util.logging

tool - ¿Cómo puedo deshabilitar el controlador de consola predeterminado, mientras uso la API de registro de Java?



no se han desinstalado las versiones obsoletas de java (5)

Debe indicar a su registrador que no envíe sus mensajes hasta su registrador principal:

... import java.util.logging.*; ... Logger logger = Logger.getLogger(this.getClass().getName()); logger.setUseParentHandlers(false); ...

Sin embargo, esto debe hacerse antes de agregar más manejadores al registrador.

Hola, estoy intentando implementar el registro Java en mi aplicación. Quiero usar dos controladores. Un manejador de archivos y mi propio controlador de consola. Mis dos controladores funcionan bien. Mi registro se envía a un archivo y a la consola. Mi registro también se envía al controlador de consola predeterminado, que no quiero. Si ejecuta mi código, verá dos líneas adicionales enviadas a la consola. No quiero usar el controlador de consola predeterminado. ¿Alguien sabe cómo deshabilitar el controlador de consola predeterminado? Solo quiero usar los dos controladores que he creado.

Handler fh = new FileHandler("test.txt"); fh.setFormatter(formatter); logger.addHandler(fh);

Handler ch = new ConsoleHandler(); ch.setFormatter(formatter); logger.addHandler(ch);

import java.util.Date; import java.util.logging.ConsoleHandler; import java.util.logging.FileHandler; import java.util.logging.Formatter; import java.util.logging.Handler; import java.util.logging.Level; import java.util.logging.LogManager; import java.util.logging.LogRecord; import java.util.logging.Logger; public class LoggingExample { private static Logger logger = Logger.getLogger("test"); static { try { logger.setLevel(Level.INFO); Formatter formatter = new Formatter() { @Override public String format(LogRecord arg0) { StringBuilder b = new StringBuilder(); b.append(new Date()); b.append(" "); b.append(arg0.getSourceClassName()); b.append(" "); b.append(arg0.getSourceMethodName()); b.append(" "); b.append(arg0.getLevel()); b.append(" "); b.append(arg0.getMessage()); b.append(System.getProperty("line.separator")); return b.toString(); } }; Handler fh = new FileHandler("test.txt"); fh.setFormatter(formatter); logger.addHandler(fh); Handler ch = new ConsoleHandler(); ch.setFormatter(formatter); logger.addHandler(ch); LogManager lm = LogManager.getLogManager(); lm.addLogger(logger); } catch (Throwable e) { e.printStackTrace(); } } public static void main(String[] args) { logger.info("why does my test application use the standard console logger ?/n" + " I want only my console handler (Handler ch)/n " + "how can i turn the standard logger to the console off. ??"); } }


El controlador de consola predeterminado se adjunta al registrador de raíz, que es el padre de todos los demás registradores, incluido el suyo. Entonces veo dos formas de resolver su problema:

Si esto solo afecta a esta clase particular suya, la solución más simple sería desactivar el pasar los registros al registrador padre:

logger.setUseParentHandlers(false);

Si desea cambiar este comportamiento para toda su aplicación, puede eliminar por completo el controlador de consola predeterminado del registrador de raíz antes de agregar sus propios manejadores:

Logger globalLogger = Logger.getLogger("global"); Handler[] handlers = globalLogger.getHandlers(); for(Handler handler : handlers) { globalLogger.removeHandler(handler); }

Nota: si desea utilizar los mismos controladores de registro en otras clases también, la mejor manera es mover la configuración de registro en un archivo de configuración a largo plazo.


Esto es extraño, pero Logger.getLogger("global") no funciona en mi configuración ( Logger.getLogger(Logger.GLOBAL_LOGGER_NAME) en Logger.getLogger(Logger.GLOBAL_LOGGER_NAME) ).

Sin embargo, Logger.getLogger("") hace bien el trabajo.

Espero que esta información también ayude a alguien ...


Restablezca la configuración y establezca el nivel raíz en OFF

LogManager.getLogManager().reset(); Logger globalLogger = Logger.getLogger(java.util.logging.Logger.GLOBAL_LOGGER_NAME); globalLogger.setLevel(java.util.logging.Level.OFF);


Solo haz

LogManager.getLogManager().reset();