[英]What are the formatting pattern semantics in Java Util Logging?
我试图理解 Java Util Logging 中使用的格式化模式。 只是通过实验,我看到以下内容:
%1$ts epoch time: 1657069724
%1$tc Standard date/time format: Tue Jul 05 20:59:21 EDT 2022
%1$tY year - 2022
%1$tb 3 char month - Jul
%1$th 3 char month - Jul
%1$tm 2 digit month - 07
%1$td 2 digit day of month - 05
%1$tH: hours (0-23) 21:
%1$tM: minutes: 03:
%1$tS. Seconds: 55.
%1$tL Milleseconds 294
%2$s logger name and method
%3$s logger name
%4$-7s log level of this message - WARNING
(s 前的 -7 表示在 7 个字符的字段中左对齐。删除“-”以右对齐)
这些记录在任何地方吗? 我在 SimpleFormat API 或 Java Util Logging 文档中看不到任何内容
java.util.logging.SimpleFormatter::format
解释了这一点:
可以通过在 java.util.logging.SimpleFormatter.format 属性中指定格式字符串来自定义格式。 给定的 LogRecord 将被格式化,就好像通过调用:
String.format(format, date, source, logger, level, message, thrown);
论据是:
- format - java.util.logging.SimpleFormatter.format 属性中指定的 java.util.Formatter 格式字符串或默认格式。
- date - 一个 ZonedDateTime 对象,表示 ZoneId.systemDefault() 系统时区中日志记录的事件时间。
- source - 表示调用者的字符串(如果可用); 否则,记录器的名称。
- logger - 记录器的名称。
- level - 日志级别。
- message - 从 Formatter.formatMessage(LogRecord) 方法返回的格式化日志消息。 它使用 java.text 格式,不使用 java.util.Formatter 格式参数。
- throw - 一个字符串,表示与日志记录关联的 throwable 及其以换行符开头的回溯(如果有); 否则为空字符串。
请注意, %[argument_index$]
与 SimpleFormatter 中的 javadocs 相差 1,因为format
被列为第一个参数。 EG date
列为2
但实际上是%1$
。
String::format具有对java.util.Formatter
的“查看”引用(不要与java.util.logging.Formatter
混淆)。
`java.util.Formatter' 的类级文档包括有关“日期/时间转换”和“标志”的信息。
如果您使用参数化日志记录,您还可以使用java.text.MessageFormat对 LogRecord 的参数进行一些格式化。 这可用于更改传递给String::format
的 'message' 参数的行为。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.