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>

手順

  1. 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>
  2. 以下の内容を 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>
  3. java ファイルを保存するディレクトリーを作成します。

    $ mkdir -p APPLICATION_ROOT/src/main/java/com/example/logging/

    APPLICATION_ROOT は、アプリケーションの pom.xml 設定ファイルが含まれるディレクトリーです。

  4. 以下の内容で 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 {
    }
  5. 以下の内容で 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();
        }
    }
  6. 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)
  7. プラグイン <configuration> 要素に以下の設定抽出を追加します。

    <cli-sessions>
            <cli-session>
            <script-files>
                <script>scripts/logging.cli</script>
            </script-files>
        </cli-session>
    </cli-sessions>

    この例は、アプリケーションの JSON ロギングを有効にするためにサーバーロギング設定ファイルを変更する logging.cli CLI スクリプトを示しています。

  8. アプリケーションを起動可能な JAR としてパッケージ化します。

    $ mvn package
  9. オプション: JBoss EAP ベアメタルプラットフォームでアプリケーションを実行するには、JBoss EAP ベアメタルプラットフォームでの起動可能な JAR の使用 にある手順に従いますが、以下の違いがあります。

    1. アプリケーションを起動します。

      mvn wildfly-jar:run
    2. 検証: ブラウザーで http://127.0.0.1:8080/hello に URL を指定すると、アプリケーションにアクセスできます。

      予期される出力: アプリケーションコンソールで com.example.logging.HelloWorldEndpoint デバッグトレースを含む JSON 形式のログを表示できます。

  10. オプション: JBoss EAP OpenShift プラットフォームでアプリケーションを実行するには、以下の手順を実行します。

    1. <cloud/> 要素をプラグイン設定に追加します。以下に例を示します。

      <plugins>
         <plugin>
             ... <!-- You must evolve the existing configuration with the <cloud/> element  -->
             <configuration >
                 ...
                 <cloud/>
              </configuration>
          </plugin>
      </plugins>
    2. アプリケーションをリビルドします。

      $ mvn clean package
    3. oc login コマンドを使用して、OpenShift インスタンスにログインします。
    4. OpenShift で新しいプロジェクトを作成します。以下に例を示します。

      $ oc new-project bootable-jar-project
    5. 以下の oc コマンドを入力してアプリケーションイメージを作成します。

      $ mkdir target/openshift && cp target/logging-bootable.jar target/openshift 
      1
      
      
      $ oc import-image ubi8/openjdk-17 --from=registry.redhat.io/ubi8/openjdk-17 --confirm
       
      2
      
      
      $ oc new-build --strategy source --binary --image-stream openjdk-17 --name logging 
      3
      
      
      $ oc start-build logging --from-dir target/openshift 
      4
      1
      target/openshift サブディレクトリーを作成します。パッケージ化されたアプリケーションは openshift サブディレクトリーにコピーされます。
      2
      最新の OpenJDK 17 イメージストリームタグおよびイメージ情報を OpenShift プロジェクトにインポートします。
      3
      ロギングディレクトリーおよび OpenJDK 17 イメージストリームに基づき、ビルド設定を作成します。
      4
      target/openshift サブディレクトリーをバイナリー入力として使用し、アプリケーションをビルドします。
    6. アプリケーションのデプロイ:

      $ oc new-app logging
      
      $ oc expose svc/logging
    7. ルートの URL を取得します。

      $ oc get route logging --template='{{ .spec.host }}'
    8. 直前のコマンドから返された URL を使用して、Web ブラウザーでアプリケーションにアクセスします。以下に例を示します。

      http://ROUTE_NAME/hello
    9. Verfication: 以下のコマンドを実行して、利用可能な OpenShift Pod のリストを表示し、Pod のビルドステータスを確認します。

      $ oc get pods

      アプリケーションの実行中の Pod ログにアクセスします。APP_POD_NAME は、実行中の Pod ロギングアプリケーションの名前です。

      $ oc logs APP_POD_NAME

      想定される結果: Pod ログは JSON 形式であり、com.example.logging.HelloWorldEndpoint デバッグトレースが含まれます。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る