繁体   English   中英

Java Util Logging 中的格式化模式语义是什么?

[英]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);

论据是:

  1. format - java.util.logging.SimpleFormatter.format 属性中指定的 java.util.Formatter 格式字符串或默认格式。
  2. date - 一个 ZonedDateTime 对象,表示 ZoneId.systemDefault() 系统时区中日志记录的事件时间。
  3. source - 表示调用者的字符串(如果可用); 否则,记录器的名称。
  4. logger - 记录器的名称。
  5. level - 日志级别。
  6. message - 从 Formatter.formatMessage(LogRecord) 方法返回的格式化日志消息。 它使用 java.text 格式,不使用 java.util.Formatter 格式参数。
  7. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM