How can I disable the default console handler, while using the java logging API?
The default console handler is attached to the root logger, which is a parent of all other loggers including yours. So I see two ways to solve your problem:
If this is only affects this particular class of yours, the simplest solution would be to disable passing the logs up to the parent logger:
logger.setUseParentHandlers(false);
If you want to change this behaviour for your whole app, you could remove the default console handler from the root logger altogether before adding your own handlers:
Logger globalLogger = Logger.getLogger("global");Handler[] handlers = globalLogger.getHandlers();for(Handler handler : handlers) { globalLogger.removeHandler(handler);}
Note: if you want to use the same log handlers in other classes too, the best way is to move the log configuration into a config file in the long run.
This is strange but Logger.getLogger("global")
does not work in my setup (as well as Logger.getLogger(Logger.GLOBAL_LOGGER_NAME)
).
However Logger.getLogger("")
does the job well.
Hope this info also helps somebody...