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>-
프로세스
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확인: 브라우저에 다음 URL을 지정하여 애플리케이션에 액세스할 수 있습니다. http://127.0.0.1:8080/hello.
예상 출력: 애플리케이션 콘솔에서
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을 사용하여 웹 브라우저의 애플리케이션에 액세스합니다. 예를 들면 다음과 같습니다.
http://ROUTE_NAME/hello확인: 사용 가능한 OpenShift Pod 목록을 보고 Pod 빌드 상태를 확인하려면 다음 명령을 실행합니다.
$ oc get pods애플리케이션의 실행 중인 Pod 로그에 액세스합니다. 여기서
APP_POD_NAME은 실행 중인 포드 로깅 애플리케이션의 이름입니다.$ oc logs APP_POD_NAME예상 결과: Pod 로그는 JSON 형식이며
com.example.logging.HelloWorldEndpoint디버그 추적을 포함합니다.