11.13. 起動可能な JAR の JSON ロギングの有効化
CLI スクリプトを使用してサーバーロギング設定を設定すると、起動可能な JAR の JSON ロギングを有効にできます。JSON ロギングを有効にすると、JSON フォーマッターを使用してログメッセージを JSON 形式で表示できます。
この手順の例では、ベアメタルプラットフォームおよび OpenShift プラットフォームで、起動可能な JAR の JSON ロギングを有効にする方法を説明します。
前提条件
-
9.minor.micro.Final-redhat-XXXXXなどの最新の Maven プラグインを確認した。この場合の 9 はメジャーバージョン、minor はマイナーバージョン、micro はマイクロバージョン、X は Red Hat ビルド番号です。たとえば9.0.1.Final-redhat-00009です。 Maven プロジェクトを作成し、アプリケーションを作成するための依存関係を追加した。起動可能な JAR Maven プロジェクトの作成 を参照してください。
重要Maven プロジェクトの Maven archetype で、プロジェクト固有の groupID および artifactID を指定する必要があります。以下に例を示します。
$ mvn archetype:generate \ -DgroupId=com.example.logging \ -DartifactId=logging \ -DarchetypeGroupId=org.apache.maven.archetypes \ -DarchetypeArtifactId=maven-archetype-webapp \ -DinteractiveMode=false cd logging注記この手順の例では、以下のプロパティーを指定します。
-
Maven プラグインバージョンの場合は、
${bootable.jar.maven.plugin.version}です。
これらのプロパティーをプロジェクトで設定する必要があります。以下に例を示します。
<properties> <bootable.jar.maven.plugin.version>9.0.1.Final-redhat-00009</bootable.jar.maven.plugin.version> </properties>-
Maven プラグインバージョンの場合は、
手順
BOM によって管理される JBoss Logging および Jakarta RESTful Web Services 依存関係を、プロジェクトの
pom.xmlファイルの<dependencies>セクションに追加します。以下に例を示します。<dependencies> <dependency> <groupId>org.jboss.logging</groupId> <artifactId>jboss-logging</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>jakarta.ws.rs</groupId> <artifactId>jakarta.ws.rs-api</artifactId> <scope>provided</scope> </dependency> </dependencies>以下の内容を
pom.xmlファイルの<build>要素に追加します。以下に例を示します。<plugins> <plugin> <groupId>org.wildfly.plugins</groupId> <artifactId>wildfly-jar-maven-plugin</artifactId> <version>${bootable.jar.maven.plugin.version}</version> <configuration> <channels> <channel> <manifest> <groupId>org.jboss.eap.channels</groupId> <artifactId>eap-8.0</artifactId> </manifest> </channel> <channel> <manifest> <groupId>org.jboss.eap.channels</groupId> <artifactId>eap-xp-5.0</artifactId> </manifest> </channel> </channels> <feature-packs> <feature-pack> <location>org.jboss.eap.xp:wildfly-galleon-pack</location> </feature-pack> </feature-packs> <layers> <layer>jaxrs-server</layer> </layers> </configuration> <executions> <execution> <goals> <goal>package</goal> </goals> </execution> </executions> </plugin> </plugins>java ファイルを保存するディレクトリーを作成します。
$ mkdir -p APPLICATION_ROOT/src/main/java/com/example/logging/APPLICATION_ROOTは、アプリケーションのpom.xml設定ファイルが含まれるディレクトリーです。以下の内容で
Java ファイル RestApplication.javaを作成し、ファイルをAPPLICATION_ROOT/src/main/java/com/example/logging/ディレクトリーに保存します。package com.example.logging; import jakarta.ws.rs.ApplicationPath; import jakarta.ws.rs.core.Application; @ApplicationPath("/") public class RestApplication extends Application { }以下の内容で Java ファイル
HelloWorldEndpoint.javaを作成し、ファイルをAPPLICATION_ROOT/src/main/java/com/example/logging/ディレクトリーに保存します。package com.example.logging; import jakarta.ws.rs.Path; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.GET; import jakarta.ws.rs.Produces; import org.jboss.logging.Logger; @Path("/hello") public class HelloWorldEndpoint { private static Logger log = Logger.getLogger(HelloWorldEndpoint.class.getName()); @GET @Produces("text/plain") public Response doGet() { log.debug("HelloWorldEndpoint.doGet called"); return Response.ok("Hello from XP bootable jar!").build(); } }logging.cliなどの CLI スクリプトを作成し、APPLICATION_ROOT/scriptsディレクトリーなどの起動可能な JAR のアクセス可能なディレクトリーに保存します。APPLICATION_ROOTは Maven プロジェクトのルートディレクトリーです。スクリプトには以下のコマンドが含まれている必要があります。/subsystem=logging/logger=com.example.logging:add(level=ALL) /subsystem=logging/json-formatter=json-formatter:add(exception-output-type=formatted, pretty-print=false, meta-data={version="1"}, key-overrides={timestamp="@timestamp"}) /subsystem=logging/console-handler=CONSOLE:write-attribute(name=level,value=ALL) /subsystem=logging/console-handler=CONSOLE:write-attribute(name=named-formatter, value=json-formatter)プラグイン
<configuration>要素に以下の設定抽出を追加します。<cli-sessions> <cli-session> <script-files> <script>scripts/logging.cli</script> </script-files> </cli-session> </cli-sessions>この例は、アプリケーションの JSON
ロギングを有効にするためにサーバーロギング設定ファイルを変更する logging.cliCLI スクリプトを示しています。アプリケーションを起動可能な JAR としてパッケージ化します。
$ mvn packageオプション: JBoss EAP ベアメタルプラットフォームでアプリケーションを実行するには、JBoss EAP ベアメタルプラットフォームでの起動可能な JAR の使用 にある手順に従いますが、以下の違いがあります。
アプリケーションを起動します。
mvn wildfly-jar:run検証: ブラウザーで http://127.0.0.1:8080/hello に URL を指定すると、アプリケーションにアクセスできます。
予期される出力: アプリケーションコンソールで
com.example.logging.HelloWorldEndpointデバッグトレースを含む JSON 形式のログを表示できます。
オプション: JBoss EAP OpenShift プラットフォームでアプリケーションを実行するには、以下の手順を実行します。
<cloud/>要素をプラグイン設定に追加します。以下に例を示します。<plugins> <plugin> ... <!-- You must evolve the existing configuration with the <cloud/> element --> <configuration > ... <cloud/> </configuration> </plugin> </plugins>アプリケーションをリビルドします。
$ mvn clean package-
oc loginコマンドを使用して、OpenShift インスタンスにログインします。 OpenShift で新しいプロジェクトを作成します。以下に例を示します。
$ oc new-project bootable-jar-project以下の
ocコマンドを入力してアプリケーションイメージを作成します。$ mkdir target/openshift && cp target/logging-bootable.jar target/openshift1 $ oc import-image ubi8/openjdk-17 --from=registry.redhat.io/ubi8/openjdk-17 --confirm2 $ oc new-build --strategy source --binary --image-stream openjdk-17 --name logging3 $ oc start-build logging --from-dir target/openshift4 アプリケーションのデプロイ:
$ oc new-app logging $ oc expose svc/loggingルートの URL を取得します。
$ oc get route logging --template='{{ .spec.host }}'直前のコマンドから返された URL を使用して、Web ブラウザーでアプリケーションにアクセスします。以下に例を示します。
http://ROUTE_NAME/helloVerfication: 以下のコマンドを実行して、利用可能な OpenShift Pod のリストを表示し、Pod のビルドステータスを確認します。
$ oc get podsアプリケーションの実行中の Pod ログにアクセスします。
APP_POD_NAMEは、実行中の Pod ロギングアプリケーションの名前です。$ oc logs APP_POD_NAME想定される結果: Pod ログは JSON 形式であり、
com.example.logging.HelloWorldEndpointデバッグトレースが含まれます。