大纲
- 基本使用
- 日志级别
- 日志处理器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。