通过 logger.log 覆盖处理程序级别

有没有办法通过记录器对象覆盖处理程序的级别。

例如:

FileHandler logFile = new FileHandler("DefaultLogger.log");
logger.setLevel(Level.FINE);

也应该将 fileHandler 的级别设置为正常。


慕姐8265434
浏览 159回答 1
1回答

不负相思意

您可以使用Logger::getHandlers方法获取给定记录器的所有安装处理程序。例如:private static void setHandlersLevel(Logger logger, Level lvl) {&nbsp; &nbsp; for (Handler h : logger.getHandlers()) {&nbsp; &nbsp; &nbsp; &nbsp;h.setLevel(lvl);&nbsp; &nbsp; }}否则,如果你想在所有记录器上找到所有处理程序,你可以使用以下命令:private static void setAllHandlersLevel(Level lvl) {&nbsp; &nbsp; LogManager lm = LogManager.getLogManager();&nbsp; &nbsp; synchronized (lm) {&nbsp; &nbsp; &nbsp; &nbsp; Enumeration<String> e = lm.getLoggerNames();&nbsp; &nbsp; &nbsp; &nbsp; while (e.hasMoreElements()) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Logger l = lm.getLogger(e.nextElement());&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (l != null) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (Handler h : l.getHandlers()) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; h.setLevel(lvl);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java