11.13. 부팅 가능한 JAR에 대한 JSON 로깅 활성화


CLI 스크립트로 서버 로깅 구성을 구성하여 부팅 가능한 JAR에 대한 JSON 로깅을 활성화할 수 있습니다. JSON 로깅을 활성화하면 JSON 포맷터를 사용하여 JSON 형식의 로그 메시지를 볼 수 있습니다.

이 절차의 예제에서는 베어 메탈 플랫폼과 OpenShift 플랫폼에서 부팅 가능한 JAR에 대한 JSON 로깅을 활성화하는 방법을 보여줍니다.

사전 요구 사항

  • 9.minor.micro.Final-redhat-XXXXX 와 같은 최신 Maven 플러그인 버전을 확인했습니다. 여기서 9 는 주요 버전이며 마이너 버전은 마이크로 마이크로 버전이며 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
    참고

    절차에 표시된 예제에서는 다음 속성을 지정합니다.

    • ${bootable.jar.maven.plugin.version} 은(는) Maven 플러그인 버전에 해당합니다.

    프로젝트에 이러한 속성을 설정해야 합니다. 예를 들면 다음과 같습니다.

    <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 파일의 & lt;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. 확인: 브라우저에 다음 URL을 지정하여 애플리케이션에 액세스할 수 있습니다. http://127.0.0.1:8080/hello.

      예상 출력: 애플리케이션 콘솔에서 com.example.logging.HelloWorldEndpoint 디버그 추적을 포함한 JSON 형식의 로그를 볼 수 있습니다.

  10. 선택 사항: JBoss EAP OpenShift 플랫폼에서 애플리케이션을 실행하려면 다음 단계를 완료합니다.

    1. &lt ;cloud/& gt; 요소를 플러그인 구성에 추가합니다. 예를 들면 다음과 같습니다.

      <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을 사용하여 웹 브라우저의 애플리케이션에 액세스합니다. 예를 들면 다음과 같습니다.

      http://ROUTE_NAME/hello
    9. 확인: 사용 가능한 OpenShift Pod 목록을 보고 Pod 빌드 상태를 확인하려면 다음 명령을 실행합니다.

      $ oc get pods

      애플리케이션의 실행 중인 Pod 로그에 액세스합니다. 여기서 APP_POD_NAME 은 실행 중인 포드 로깅 애플리케이션의 이름입니다.

      $ oc logs APP_POD_NAME

      예상 결과: Pod 로그는 JSON 형식이며 com.example.logging.HelloWorldEndpoint 디버그 추적을 포함합니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동