Java Util Logging格式化模式语义规则及官方文档说明
Java Util Logging 格式化模式符官方记载说明
这些格式化规则是有官方公开文档记载的,你之前没检索到是因为规则没有集中写在SimpleFormatter类文档的显眼位置,而是拆分在两个核心类的规范说明中:
- 格式串里的通用语法规则(包括宽度设置、对齐规则,比如
-7代表7字符宽度内左对齐、移除-则右对齐),以及所有带t前缀的时间类格式符,全部属于java.util.Formatter类定义的通用格式化语法,不是Java Util Logging自定义的规则,你实测得到的各个时间格式符效果,和Formatter定义的日期/时间转换规则完全匹配。 - 格式串中
$符号前的数字序号对应的注入内容,是SimpleFormatter调用格式化逻辑时固定传入的参数顺序,这部分映射规则定义在SimpleFormatter关于java.util.logging.SimpleFormatter.format配置项的说明中,和你实际测试的结果完全一致:
%1$ts 纪元时间戳: 1657069724 %1$tc 标准日期时间格式: Tue Jul 05 20:59:21 EDT 2022 %1$tY 4位年份 - 2022 %1$tb 3位缩写月份 - Jul %1$th 3位缩写月份 - Jul %1$tm 2位月份 - 07 %1$td 2位月内日期 - 05 %1$tH: 24小时制小时: 21: %1$tM: 分钟: 03: %1$tS. 秒: 55. %1$tL 毫秒 294 %2$s 日志来源类名与方法名 %3$s 对应的Logger名称 %4$-7s 日志级别 - WARNING
补充:除了你测试覆盖到的4个位置参数外,
SimpleFormatter还固定传入了另外两个参数:%5$s对应格式化完成的日志消息正文,%6$s对应日志携带的异常堆栈信息(当日志关联了异常抛出时才会有内容)。
内容的提问来源于stack exchange,提问作者Vinny Gray
相关产品推荐
相关产品推荐

