JUL 配置文件详解
跳到导航
跳到搜索
https://www.bilibili.com/video/BV1iJ411H74S?p=9
logging.properties
# RootLogger 顶级父元素指定的默认处理器为:ConsoleHandler
handlers= java.util.logging.FileHandler
# RootLogger 顶级父元素指定的默认日志级别为:ALL
.level= ALL
# 向日志文件输出的 Handler 对象
# 指定日志文件路径 java%u.log
java.util.logging.FileHandler.pattern = java%u.log
# 指定日志文件内容大小为 50000 条
java.util.logging.FileHandler.limit = 50000
# 指定日志文件数量
java.util.logging.FileHandler.count = 1
# 指定 Handler 对象日志消息格式对象
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
# 向控制台输出的 Handler 对象
# 指定 Handler 对象的日志级别
java.util.logging.ConsoleHandler.level = ALL
# 指定 Handler 对象的日志消息格式对象
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
# 指定 Handler 对象的字符集
java.util.logging.ConsoleHandler.encoding = UTF-8
# 指定日志消息格式
java.util.logging.SimpleFormatter.format = %4$s: %5$s [%1$tc]%n
更换向日志文件输出的 Handler 对象对应的日志消息格式对象
# 指定 Handler 对象日志消息格式对象
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
java0.log
严重: severe [星期四 二月 23 09:30:36 CST 2023]
警告: warning [星期四 二月 23 09:30:37 CST 2023]
信息: info [星期四 二月 23 09:30:37 CST 2023]
配置: config [星期四 二月 23 09:30:37 CST 2023]
详细: fine [星期四 二月 23 09:30:37 CST 2023]
较详细: finer [星期四 二月 23 09:30:37 CST 2023]
非常详细: finest [星期四 二月 23 09:30:37 CST 2023]
日志文件内容由原先的 XML 格式变成了简单的行文本记录格式
指定以追加方式添加日志内容
java.util.logging.FileHandler.append = true
重复运行多次程序,每一次运行不再覆盖上一次运行记录的日志内容
使用自定义 Logger
# RootLogger 顶级父元素指定的默认处理器为:ConsoleHandler
handlers= java.util.logging.FileHandler
# RootLogger 顶级父元素指定的默认日志级别为:ALL
.level= ALL
# 自定义 Logger 使用
io.github.jihch.handlers = java.util.logging.ConsoleHandler
io.github.jihch.level = CONFIG
# 关闭默认配置
io.github.jihch.useParentHandler = false
# 向日志文件输出的 Handler 对象
# 指定日志文件路径 java%u.log
java.util.logging.FileHandler.pattern = java%u.log
# 指定日志文件内容大小为 50000 条
java.util.logging.FileHandler.limit = 50000
# 指定日志文件数量
java.util.logging.FileHandler.count = 1
# 指定 Handler 对象日志消息格式对象
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
# 指定以追加方式添加日志内容
java.util.logging.FileHandler.append = true
//加载自定义配置文件
@Test
public void testLogProperties() throws IOException {
// 读取配置文件,通过类加载器
InputStream resourceAsStream = JULTest.class.getClassLoader().getResourceAsStream("logging.properties");
// 创建 LogManager
LogManager logManager = LogManager.getLogManager();
// 通过 LogManager 加载配置文件
logManager.readConfiguration(resourceAsStream);
// 创建日志记录器
Logger logger = Logger.getLogger("io.github.jihch");
logger.severe("severe");
logger.warning("warning");
logger.info("info");
logger.config("config");
logger.fine("fine");
logger.finer("finer");
logger.finest("finest");
Logger logger2 = Logger.getLogger("test");
logger2.severe("severe test");
logger2.warning("warning test");
logger2.info("info test");
logger2.config("config test");
logger2.fine("fine test");
logger2.finer("finer test");
logger2.finest("finest test");
}
控制台:
严重: severe [星期四 二月 23 10:31:54 CST 2023]
警告: warning [星期四 二月 23 10:31:54 CST 2023]
信息: info [星期四 二月 23 10:31:54 CST 2023]
配置: config [星期四 二月 23 10:31:54 CST 2023]
java0.log:
严重: severe test [星期四 二月 23 10:31:54 CST 2023]
警告: warning test [星期四 二月 23 10:31:54 CST 2023]
信息: info test [星期四 二月 23 10:31:54 CST 2023]
配置: config test [星期四 二月 23 10:31:54 CST 2023]
详细: fine test [星期四 二月 23 10:31:54 CST 2023]
较详细: finer test [星期四 二月 23 10:31:54 CST 2023]
非常详细: finest test [星期四 二月 23 10:31:54 CST 2023]
因为指定了 io.github.jihch 对应的 Logger 对象使用 ConsoleHandler(io.github.jihch.handlers = java.util.logging.ConsoleHandler
),所以控制台中记录了日志内容;
又因为指定了 io.github.jihch 对应的 Logger 对象 logger 不使用父级 Handler(io.github.jihch.useParentHandler = false
),所以 logger 记录的内容没有出现在 java0.log 中;
而在配置文件中并没有为 test 对应的 Logger 对象 logger2 指定对应的 Handler,所以默认使用了 RootLogger 的 FileHandler(handlers= java.util.logging.FileHandler
),输出到了 java0.log;
同时因为使用了 RootLogger 的日志级别(.level= ALL
),logger2 记录在 java0.log 中的内容包含了所有日志级别的记录内容;
又因为指定了 io.github.jihch 对应的 Logger 对象 logger 的日志级别是 CONFIG(io.github.jihch.level = CONFIG
),所以控制台中没有记录日志级别比 CONFIG 低的内容;