Java JUL是JDK自带轻量级日志框架,默认仅输出INFO及以上级别到控制台,推荐用类全限定名获取Logger、占位符记录日志,并可通过setLevel和addHandler自定义级别与输出目标。

Java 的 java.util.logging(JUL)是 JDK 自带的轻量级日志框架,无需额外依赖,适合简单项目或学习使用。默认配置下即可直接记录日志,但需注意其默认只输出 INFO 及以上级别到控制台,且根处理器(ConsoleHandler)默认使用 SimpleFormatter。
获取 Logger 实例
不建议用 Logger.getLogger("") 或空字符串名,应使用有意义的命名空间,通常用当前类的全限定名:
private static final Logger logger = Logger.getLogger(MyClass.class.getName());- 也可简写为
Logger.getLogger("com.example.MyClass") - 避免多个类共用同一 Logger 名(除非有意共享配置)
基础日志方法调用
支持按级别调用对应方法,也支持通用 log(Level, String) 方式:
logger.info("服务启动完成");logger.warning("配置文件未找到,使用默认值");logger.severe("数据库连接失败:" + e.getMessage());- 推荐使用带占位符的
log(Level, String, Object)避免字符串拼接(如logger.log(Level.INFO, "用户 {0} 登录成功", username);)
调整日志级别与输出目标
默认只显示 INFO 及以上,如需输出 FINE 级别,需显式设置:
- 设置 Logger 级别:
logger.setLevel(Level.FINE); - 确保 Handler 也接受该级别:
logger.getParent().getHandlers()[0].setLevel(Level.ALL); - 添加文件输出:创建
FileHandler并添加到 Logger:logger.addHandler(new FileHandler("app.log")); - 自定义格式:为 Handler 设置
SimpleFormatter或继承Formatter实现
简单配置示例(代码内配置)
以下代码启用 FINE 日志并输出到文件和控制台:
Logger logger = Logger.getLogger("demo");
logger.setLevel(Level.ALL);
ConsoleHandler consoleHandler = new ConsoleHandler();
consoleHandler.setLevel(Level.ALL);
consoleHandler.setFormatter(new SimpleFormatter());
logger.addHandler(consoleHandler);
try {
FileHandler fileHandler = new FileHandler("demo.log", true);
fileHandler.setLevel(Level.ALL);
fileHandler.setFormatter(new SimpleFormatter());
logger.addHandler(fileHandler);
} catch (IOException e) {
logger.severe("无法创建日志文件: " + e.getMessage());
}
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











