8.12. 为可引导 JAR 启用 JSON 日志记录
您可以通过使用 CLI 脚本配置服务器日志配置,为您的可引导 JAR 启用 JSON 日志记录。启用 JSON 日志记录时,您可以使用 JSON 格式查看 JSON 格式的日志消息。
此流程中的示例演示了如何在裸机平台和 OpenShift 平台上为可引导 JAR 启用 JSON 日志记录。
先决条件
-
您已检查了最新的 Maven 插件版本,如
MAVEN_PLUGIN_VERSION.X.GA.Final-redhat-00001,其中 MAVEN_PLUGIN_VERSION 是主版本,X 是 microversion。请参阅 /ga/org/wildfly/plugins/wildfly-jar-maven-plugin 的索引。 -
您已检查了最新的 Galleon 功能包版本,如
3.0.X.GA-redhat-BUILD_NUMBER,其中 X 是 JBoss EAP XP 和 BUILD_NUMBER 的 次要版本,是 Galleon 功能包的构建号。X 和 BUILD_NUMBER 在 JBoss EAP XP 3.0.0 产品生命周期中都可能会演变。请参阅 /ga/org/jboss/eap/wildfly-galleon-pack 的索引。 您已创建了 Maven 项目,设置父依赖项,并添加了用于创建应用的依赖项。请参阅 创建可引导 JAR Maven 项目。
重要在 Maven 项目的 Maven archetype 中,您必须指定特定于项目的 groupID 和 artifactID。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意流程中显示的示例指定以下属性:
-
用于 Maven 插件版本的
${bootable.jar.maven.plugin.version}。 -
Gall
eon 功能包版本的 ${JBoss.xp.galleon.feature.pack.version}。
您必须在项目中设置这些属性。例如:
<properties> <bootable.jar.maven.plugin.version>4.0.3.Final-redhat-00001</bootable.jar.maven.plugin.version> <jboss.xp.galleon.feature.pack.version>3.0.0.GA-redhat-00001</jboss.xp.galleon.feature.pack.version> </properties><properties> <bootable.jar.maven.plugin.version>4.0.3.Final-redhat-00001</bootable.jar.maven.plugin.version> <jboss.xp.galleon.feature.pack.version>3.0.0.GA-redhat-00001</jboss.xp.galleon.feature.pack.version> </properties>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
用于 Maven 插件版本的
流程
将由 BOM 管理的 JBoss Logging 和 Jakarta RESTful Web Services 依赖项添加到项目的
pom.xml文件的<dependencies> 部分。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容添加到
pom.xml文件的<build> 元素中。您必须指定任何 Maven 插件的最新版本,以及org.jboss.eap:wildfly-galleon-packGalleon 功能包的最新版本。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建用于存储 Java 文件的目录:
mkdir -p APPLICATION_ROOT/src/main/java/com/example/logging/
$ mkdir -p APPLICATION_ROOT/src/main/java/com/example/logging/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
APPLICATION_ROOT是含有应用的pom.xml配置文件的目录。创建包含以下内容的 Java 文件
RestApplication.java,并将该文件保存到APPLICATION_ROOT/src/main/java/com/example/logging/目录中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建包含以下内容的 Java 文件
HelloWorldEndpoint.java,并将该文件保存到APPLICATION_ROOT/src/main/java/com/example/logging/目录中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 CLI 脚本,如
logging.cli,并将它保存在可引导 JAR 中的可访问目录中,如APPLICATION_ROOT/scripts目录,其中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)/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)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下配置提取添加到插件
<configuration>元素中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 本例显示了
logging.cliCLI 脚本,该脚本修改服务器日志配置文件,以为您的应用启用 JSON 日志记录。将应用打包为可引导 JAR。
mvn package
$ mvn packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选 : 要在 JBoss EAP 裸机平台上运行应用,请按照在 JBoss EAP 裸机平台上使用可引导 JAR 中所述的步骤进行操作, 但会有以下差异:
启动应用程序:
mvn wildfly-jar:run
mvn wildfly-jar:runCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证:您可以通过在浏览器中指定以下 URL 来访问应用 :
预期输出:您可以在应用程序控制台中查看 JSON 格式的日志,包括
com.example.logging.HelloWorldEndpoint调试追踪。
可选 : 要在 JBoss EAP OpenShift 平台上运行应用程序,请完成以下步骤:
在插件配置中添加
<cloud/> 元素。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新构建应用程序:
mvn clean package
$ mvn clean packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
使用
oc login 命令登录您的 OpenShift 实例。 在 OpenShift 中创建新项目:例如:
oc new-project bootable-jar-project
$ oc new-project bootable-jar-projectCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下
oc命令来创建应用程序镜像:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署应用程序:
oc new-app logging oc expose svc/logging
$ oc new-app logging $ oc expose svc/loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 获取路由的 URL。
oc get route logging --template='{{ .spec.host }}'$ oc get route logging --template='{{ .spec.host }}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用上一命令返回的 URL 访问 Web 浏览器中的应用。例如:
http://ROUTE_NAME/hello
http://ROUTE_NAME/helloCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证: 运行以下命令来查看可用的 OpenShift pod 列表,并检查 pod 构建状态:
oc get pods
$ oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 访问应用的正在运行的容器集日志。其中
APP_POD_NAME是正在运行的容器集日志记录应用程序的名称。oc logs APP_POD_NAME
$ oc logs APP_POD_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow 预期结果:pod 日志采用 JSON 格式,包括
com.example.logging.HelloWorldEndpoint调试追踪。