在 Java 中,Logger(java.util.logging.Logger) 的“关闭”通常不是真正销毁它,而是停止输出日志或关闭底层 Handler(如文件流)。下面按常见场景说明。
import java.util.logging.*;
Logger logger = Logger.getLogger("com.example");
logger.setLevel(Level.OFF);
✅ 效果:该 Logger 不再记录任何日志
⚠ 注意:如果父 Logger 仍允许,子 Logger 可能仍输出(见下方说明)
Logger logger = Logger.getLogger("com.example");
for (Handler handler : logger.getHandlers()) {
logger.removeHandler(handler);
}
✅ 效果:不再有输出目的地
⚠ 默认 Logger 会继承父 Logger 的 Handler
logger.setUseParentHandlers(false);
✅ 常用!防止日志被 root logger 输出到控制台
Logger rootLogger = Logger.getLogger("");
rootLogger.setLevel(Level.OFF);
或
for (Handler handler : rootLogger.getHandlers()) {
rootLogger.removeHandler(handler);
}
如果是 FileHandler,需要手动关闭:
for (Handler handler : logger.getHandlers()) {
handler.close();
}
✅ 防止文件句柄泄漏
logging.properties:
com.example.level = OFF
或全局:
.level = OFF
❌ Logger 没有 close() 方法
❌ 不能“删除”一个已存在的 Logger
✅ 只能通过 级别 / Handler / 配置 控制
Configurator.setLevel(logger, Level.OFF)logback.xml如果你能告诉我:
我可以给你更精确的代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。