◀戻る
ネイティブ実行可能ファイルにロギングを追加する
既定では、ネイティブイメージが生成するネイティブ実行可能ファイルは、java.util.logging.*
API によるロギングをサポートしています。
既定のロギング設定
ネイティブ実行可能ファイルでの既定のロギング設定は、JDK にある logging.properties
ファイルをベースとしています。このファイルは java.util.logging.ConsoleHandler
を設定しますが、この Handler は INFO
レベル以上のメッセージのみを表示します。カスタムロギング設定は、以下で説明するように、ビルド時または実行時にロードできます。
追加のロギング Handler が必要な場合は、リフレクション用に対応するクラスを登録する必要があります。たとえば、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 ファイルを実行時処理で使用できるようにする必要があります。そのため、reachability-metadata.json ファイルを _META-INF/native-image/
_ フォルダーの下に含める必要があります。これを行う方法の詳細については、[ネイティブ実行可能ファイルでのリソースの使用](/latest/reference-manual/native-image/metadata/#resources)を参照してください。