[英]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.