◀返回
為原生可執行檔新增日誌功能
預設情況下,由 Native Image 產生的原生可執行檔透過 java.util.logging.*
API 支援日誌記錄。
預設日誌組態
原生可執行檔中的預設日誌組態基於 JDK 中找到的 logging.properties
檔案。此檔案設定一個 java.util.logging.ConsoleHandler
,它只會顯示 INFO
級別或更高等級的訊息。自訂日誌組態可以如以下所述,在建置時或執行時載入。
如果您需要額外的日誌處理常式,則必須註冊相應的類別以進行反射。例如,如果您使用 java.util.logging.FileHandler
,則請提供以下反射組態
{
"name" : "java.util.logging.FileHandler",
"methods" : [
{ "name" : "<init>", "parameterTypes" : [] },
]
}
如需更多詳細資訊,請參閱反射支援。
以下範例顯示記錄器的使用方式
-
將以下 Java 程式碼儲存到名為 LoggerRunTimeInit.java 的檔案中,並編譯它
import java.io.IOException; import java.util.logging.Level; import java.util.logging.LogManager; import java.util.logging.Logger; public class LoggerRunTimeInit { public static void main(String[] args) throws IOException { LogManager.getLogManager().readConfiguration(LoggerRunTimeInit.class.getResourceAsStream("/logging.properties")); Logger logger = Logger.getLogger(LoggerRunTimeInit.class.getName()); logger.log(Level.WARNING, "Danger, Will Robinson!"); } }
javac LoggerRunTimeInit.java
-
下載 logging.properties 資源檔案,並將其儲存到與 LoggerRunTimeInit.java 相同的目錄中。
-
建置並執行原生可執行檔
native-image LoggerRunTimeInit -H:IncludeResources="logging.properties"
./loggerruntimeinit
它應該產生類似以下的輸出
WARNING: Danger, Will Robinson! [Wed May 18 17:22:40 BST 2022]
在這種情況下,logging.properties 檔案需要可供執行時處理,因此必須將其包含在 _META-INF/native-image/ 下的 reachability-metadata.json 檔案中。
_ 資料夾。如需如何執行此操作的更多詳細資訊,請參閱 [在原生可執行檔中使用資源](/latest/reference-manual/native-image/metadata/#resources)。