簡體   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