8.12. 起動可能な JAR の JSON ロギングの有効化
CLI スクリプトを使用してサーバーロギング設定を設定すると、起動可能な JAR の JSON ロギングを有効にできます。JSON ロギングを有効にすると、JSON フォーマッターを使用してログメッセージを JSON 形式で表示できます。
この手順の例では、ベアメタルプラットフォームおよび OpenShift プラットフォームで、起動可能な JAR の JSON ロギングを有効にする方法を説明します。
前提条件
-
MAVEN_PLUGIN_VERSION.X.GA.Final-redhat-00001
などの最新の Maven プラグインバージョンを確認している。MAVEN_PLUGIN_VERSION はメジャーバージョンで、X はマイクロバージョンです。/ga/org/wildfly/plugins/wildfly-jar-maven-plugin のインデックス を参照してください。 -
2.0.X.GA-redhat-BUILD_NUMBER
などの最新の Galleon 機能パックバージョンを確認している。X は JBoss EAP XP 2 のミーラーバージョンで、BUILD_NUMBER は Galleon 機能パックのビルド番号。X と BUILD_NUMBER は、JBoss EAP XP 2.0.0 製品のライフサイクル中に進化できます。Index of /ga/org/jboss/eap/wildfly-galleon-pack のインデックス を参照してください。 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}
です。 -
Galleon 機能パックバージョンの場合は、
${jboss.xp.galleon.feature.pack.version}
です。
これらのプロパティーをプロジェクトで設定する必要があります。以下に例を示します。
<properties> <bootable.jar.maven.plugin.version>2.0.2.Final-redhat-00001</bootable.jar.maven.plugin.version> <jboss.xp.galleon.feature.pack.version>2.0.0.GA-redhat-00002</jboss.xp.galleon.feature.pack.version> </properties>
-
Maven プラグインバージョンの場合は、
手順
BOM によって管理される JBoss Logging および JAX-RS 依存関係を、プロジェクトの
pom.xml
ファイルの<dependencies>
セクションに追加します。例を以下に示します。<dependencies> <dependency> <groupId>org.jboss.logging</groupId> <artifactId>jboss-logging</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.jboss.spec.javax.ws.rs</groupId> <artifactId>jboss-jaxrs-api_2.1_spec</artifactId> <scope>provided</scope> </dependency> </dependencies>
以下の内容を
pom.xml
ファイルの<build>
要素に追加します。最新バージョンの Maven プラグインと、org.jboss.eap:wildfly-galleon-pack
Galleon 機能パックの最新バージョンを指定する必要があります。以下に例を示します。<plugins> <plugin> <groupId>org.wildfly.plugins</groupId> <artifactId>wildfly-jar-maven-plugin</artifactId> <version>${bootable.jar.maven.plugin.version}</version> <configuration> <feature-packs> <feature-pack> <location>org.jboss.eap:wildfly-galleon-pack:${jboss.xp.galleon.feature.pack.version}</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 javax.ws.rs.ApplicationPath; import javax.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 javax.ws.rs.Path; import javax.ws.rs.core.Response; import javax.ws.rs.GET; import javax.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(); } }
configure-oidc.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.cli
CLI スクリプトを示しています。アプリケーションを起動可能な 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/openshift 1 $ oc import-image ubi8/openjdk-11 --from=registry.redhat.io/ubi8/openjdk-11 --confirm 2 $ oc new-build --strategy source --binary --image-stream openjdk-11 --name logging 3 $ oc start-build logging --from-dir target/openshift 4
アプリケーションのデプロイ:
$ oc new-app logging $ oc expose svc/logging
ルートの URL を取得します。
$ oc get route logging --template='{{ .spec.host }}'
直前のコマンドから返された URL を使用して、Web ブラウザーでアプリケーションにアクセスします。以下に例を示します。
http://ROUTE_NAME/hello
Verfication: 以下のコマンドを実行して、利用可能な OpenShift Pod の一覧を表示し、Pod のビルドステータスを確認します。
$ oc get pods
アプリケーションの実行中の Pod ログにアクセスします。
APP_POD_NAME
は、実行中の Pod ロギングアプリケーションの名前です。$ oc logs APP_POD_NAME
想定される結果: Pod ログは JSON 形式であり、
com.example.logging.HelloWorldEndpoint
デバッグトレースが含まれます。
関連情報
- JBoss EAP のロギング機能に関する詳細は、設定ガイドの JBoss EAP を用いたロギング を参照してください。
- OpenShift で起動可能な JAR を使用する方法は、JBoss EAP OpenShift プラットフォームでの起動可能な JAR の使用 を参照してください。
- プロジェクトに JBoss EAP JAR Maven を指定する方法は、起動可能な JAR サーバーの Galleon レイヤーの指定 を参照してください。
- CLI スクリプトの作成に関する詳細は、CLI スクリプト を参照してください。