Logger rootLogger = Logger.getLogger(""); Handler[] handlers = rootLogger.getHandlers(); for (Handler h : handlers) { h.setLevel(level); } rootLogger.setLevel(level);
Search This Blog
Showing posts with label logging. Show all posts
Showing posts with label logging. Show all posts
Java util logging: configure root logger
log4j2: conditional appender using routes
<?xml version="1.0"?> <Configuration status="INFO"> <Appenders> <Console name="SYS_OUT" target="SYSTEM_OUT" /> <Console name="SYS_ERR" target="SYSTEM_ERR" /> <Routing name="Router"> <Routes pattern="$${env:STREAM_TO:-OUT}"> <Route ref="SYS_OUT" key="OUT" /> <Route ref="SYS_ERR" key="ERR" /> </Routes> </Routing> </Appenders> <Loggers> <Root level="INFO"> <AppenderRef ref="Router" /> </Root> </Loggers> </Configuration>
see also
Java: Stream Handler for Logger
Logger logger = Logger.getLogger("daris-download"); logger.setLevel(Level.ALL); logger.setUseParentHandlers(false); /* * file handler */ FileHandler fileHandler = new FileHandler( "%h/.daris/daris-download.%g.log", 5000000, 2); fileHandler.setLevel(Level.ALL); fileHandler.setFormatter(new Formatter() { @Override public String format(LogRecord record) { StringBuilder sb = new StringBuilder(); sb.append(new Date(record.getMillis())).append(" "); sb.append("[thread: ").append(record.getThreadID()) .append("] "); sb.append(record.getLevel().getName()).append(" "); sb.append(record.getMessage()); sb.append("\n"); return sb.toString(); } }); logger.addHandler(fileHandler); /* * console handler */ StreamHandler consoleHandler = new StreamHandler(System.out, new Formatter() { @Override public String format(LogRecord record) { return record.getMessage() + "\n"; } }) { @Override public synchronized void publish(LogRecord record) { super.publish(record); super.flush(); } }; consoleHandler.setLevel(Level.INFO); logger.addHandler(consoleHandler);
Java: low level logging messages not showing
FINE level logging message is not shown even if the handler.setLevel(Level.FINE).
Reason
java.util.logging has a root logger that defaults to Level.INFO, and a ConsoleHandler attached to it that also defaults to Level.INFO. Level.FINE is lower than Level.INFO, so fine messages are not displayed by default.Solution
Logger logger = Logger.getLogger("my-logger"); logger.setLevel(Level.ALL); logger.setUseParentHandlers(false); /* * file handler */ FileHandler fileHandler = new FileHandler( "%h/.my-app.%g.log", 5000000, 2); fileHandler.setLevel(Level.ALL); logger.addHandler(fileHandler); /* * console handler */ ConsoleHandler consoleHandler = new ConsoleHandler(); consoleHandler.setLevel(Level.INFO); logger.addHandler(consoleHandler);
Subscribe to:
Posts (Atom)