大纲

  • 基本使用
  • 日志级别
  • 日志处理器Handler
  • 日志格式化器Formater
  • 日志的层级关系

基本使用

import java.util.logging.Logger;
public class Demo01 {
    private final static Logger log = Logger.getLogger(Demo01.class.getName());
    public static void main(String[] args) {
        log.info("hello world");
    }
}
2月 02, 2026 11:44:58 上午 w.Demo01 main
信息: hello world

解释

  • 代码

​ jul正常定义日志定义成private只在一个类中使用,final修饰。通过调用Logger的静态方法**getLogger()**将类的名称作为参数传进去.

  • 输出

​ 时间格式默认为:mm月 xx, yyyy年 am/pm 类全限定名 方法 信息:xxxxx

高版本的jdk比如17,默认配置文件在安装目录下的/conf目录的logging.properties下。

日志级别

​ 需要在配置文件logging.properties中设置

  • log.severe("严重级别");
  • log.warning("警告级别");
  • log.info("信息级别"); //默认
  • log.config("配置级别");
  • log.fine(" 细微级别");
  • log.finer("更细微级别");
  • log.finest("最细微级别");
public class Demo02 {
    private static final Logger log = Logger.getLogger(Demo02.class.getName());
    public static void main(String[] args) {
        log.severe("严重级别");
        log.warning("警告级别");
        log.info("信息级别"); //默认

        log.config("配置级别");
        log.fine(" 细微级别");
        log.finer("更细微级别");
        log.finest("最细微级别");
    }
}

Handler

public class Demo03 {
    private static final Logger log = Logger.getLogger(Demo03.class.getName());
    public static void main(String[] args) throws IOException {
        log.setUseParentHandlers(false); //必须关闭父级处理器
        
        ConsoleHandler consoleHandler = new ConsoleHandler();
        consoleHandler.setLevel(java.util.logging.Level.ALL);
        log.addHandler(consoleHandler);
        log.severe("严重级别");

        FileHandler fileHandler = new FileHandler("D://demo03.log", true);
        fileHandler.setLevel(java.util.logging.Level.ALL);
        log.addHandler(fileHandler);
        log.info("信息级别");
    }
}

JUL有两种处理器,控制台ConsoleHandler和FileHandler。创建处理器并且加入到日志对象中就完成功能。注意:必须要关闭父级管理器,java启动默认有一个处理器默认配置就是处理器中相关的内容。

Formatter

public class Demo04 {
    private static final Logger log = Logger.getLogger(Demo04.class.getName());
    public static void main(String[] args) throws IOException {

        log.setUseParentHandlers(false);//必须关闭父级处理器

        SimpleFormatter formatter = new SimpleFormatter();

        FileHandler fileHandler = new FileHandler("D://demo04.log", true);
        fileHandler.setLevel(Level.ALL);
        fileHandler.setFormatter(formatter); //设置日志格式
        log.addHandler(fileHandler);
        log.info("信息级别");
    }
}

控制台默认的日志格式就是SimpleFormatter,文件输出的是xml格式,所以只要把FileHandler的日志格式改成SimpleFormatter。