目录

JUL日志框架

# 一、JUL框架介绍

JUL 全称 : Java util logging ,Java原生的日志框架,主要用于小型项目,使用方便。

作用:可以按照不同的层次分级去显示信息,将程序运行中的信息更加规范化的输出。

# 二、JUL组成介绍

  • Logger:也被称作记录器,是日志实现的基础。
  • Handler|Appenders:也被称作处理器,一个 Logger 可同时存在多个处理器,以其具体实现类决定日志的输出位置是控制台、文件还是网络上的其他日志服务器。
  • Layouts:也被称为Formatters,它负责对日志事件中的数据进行转换和格式化,它决定了日志记录的最终显示形式。
  • Level:日志输出级别,Logger 和 Handeler 都有一个 Level 级别,如两者出现冲突时,以级别高的等级为准。
  • Filters:过滤器,可以自主过滤掉不需要的日志信息,可以在 Logger 和 Handeler 上分别设置。

流程图

# 三、日志等级划分

在JUL中日志被划分为七个等级,由高到低分别为:

SEVERE(最高等级)代表程序出现了严重错误
WARNING	用于表示某些警告信息
INFO(默认等级)常规消息
CONFIG
FINE
FINER
FINEST(最低等级)
1
2
3
4
5
6
7

还有两个特殊等级 OFF和ALL,OFF用于关闭日志记录,ALL用于启用所有的消息日志记录。

需注意,虽然日志等级被分为了七个等级,但默认只显示INFO及以上等级。

# 四、日志框架的基础使用

1、获取当前类的 logger 对象

Logger logger = Logger.getLogger(MainTest.class.getName());
// logger 对象不能直接创建,需要用静态方法去获取,方法的参数是想要记录日志信息类的完整包名,可用 类名.class.getName()去获取。
1
2

2、输出日志信息

logger.severe("我是一条错误信息");
logger.warning("我是一条警告信息");
logger.info("我是一条日志信息");
// 可通过这种方式去输出日志信息,输出位置要看handler处理器是什么,默认是向控制台输出。
1
2
3
4

# 五、日志框架的自定义配置

对于JUL日志框架来说,可以设定其日志输出等级,日志处理器类型,输出日志格式,过滤器配置。

可以通过两种方式去设置:程序中设置和配置文件设置,文件设置是比较常用且方便的格式。

1、常用配置文件设置

#全局配置

# 顶级RootLogger关联的Handler,多个Handler使用逗号隔开
# 对于其他Logger,如果没有指定自己的Handler,则默认使用此handlers
handlers= java.util.logging.FileHandler

# 默认全局日志级别,Logger和Handler都可以设置自己的日志级别来覆盖此级别
.level= ALL


# Handler 配置

# FileHandler定义
# 日志文件存储位置
java.util.logging.FileHandler.pattern = ./jul%u.log
# 单个文件的最大字节数,0代表不限制
java.util.logging.FileHandler.limit = 50000
# 文件数量上限,多个文件为jul0.log.0,jul0.log.1 ...
java.util.logging.FileHandler.count = 5
# 日志级别
java.util.logging.FileHandler.level = info
# 日志追加方式
java.util.logging.FileHandler.append = true
# Handler对象采用的字符集
java.util.logging.FileHandler.encoding = UTF-8
# 日志格式,使用系统默认的简单格式
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter


# 特定Logger 配置

# 设置名称为org.example.Main的Logger对象的日志级别为WARNING
org.example.Main.level = WARNING
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

加载配置文件:

LogManager logManager = LogManager.getLogManager();   logManager.readConfiguration(Resources.getResourceAsStream("logging.properties"));
1

2、程序中设置

	// 获取当前类的日志记录器对象
    Logger logger = Logger.getLogger(MainTest.class.getName());

    // 关闭默认配置,即不使用父Logger的Handlers
    logger.setUseParentHandlers(false);

    // 设置记录器的日志级别为ALL
    logger.setLevel(Level.ALL);

    // 日志记录格式,使用简单格式转换对象
    SimpleFormatter simpleFormatter = new SimpleFormatter();

    // 控制台输出Handler,并且设置日志级别为INFO,日志记录格式
    ConsoleHandler consoleHandler = new ConsoleHandler();
    consoleHandler.setLevel(Level.INFO);
    consoleHandler.setFormatter(simpleFormatter);

    // 文件输出Handler,并且设置日志级别为FINE,日志记录格式
    FileHandler fileHandler = new FileHandler("./jul.log");
    fileHandler.setLevel(Level.FINE);
    fileHandler.setFormatter(simpleFormatter);

    // 记录器关联处理器,即此logger对象的日志信息输出到这两个Handler进行处理
    logger.addHandler(consoleHandler);
    logger.addHandler(fileHandler);

    // 日志记录输出
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# 六、日志处理器的分类

ConsoleHandeler(控制台日志处理器) FileHandler(文件日志处理器)
日志输出位置 输出到控制台 输出到文件
日志输出格式 默认是普通文本格式 默认是xml格式
写入方式 可以设置是否追加写入,默认是false
Logger的默认日志处理器
上次更新: 2025/08/14, 07:16:50
最近更新
01
HTTP状态码速查与场景解析
08-26
02
为什么Java中的类名要和文件名相同
08-11
03
Java日期时间格式化的规则解析
12-10
更多文章>