The logging quickstart demonstrates how to configure different logging levels in JBoss EAP.
The logging quickstart demonstrates how to set up and log different levels of information in Red Hat JBoss Enterprise Application Platform.
This quickstart contains contains a simple REST endpoint which will log messages. The index.html page can be used
to log messages and see the results. However, you could use a REST client or something like cURL to invoke log
messages.
To better visualize how the logging configuration works, you first deploy and access the application before configuring the logs and view the resulting log files. Then you configure the logs, redeploy and access the application, and look at the log files again to see the differences.
The application this project produces is designed to be run on Red Hat JBoss Enterprise Application Platform 8.1 or later.
All you need to build this project is Java SE 17.0 or later, and Maven 3.6.0 or later. See Configure Maven to Build and Deploy the Quickstarts to make sure you are configured correctly for testing the quickstarts.
In the following instructions, replace EAP_HOME with the actual path to your JBoss EAP installation. The installation path is described in detail here: Use of EAP_HOME and JBOSS_HOME Variables.
When you see the replaceable variable QUICKSTART_HOME, replace it with the path to the root directory of all of the quickstarts.
Before you begin, back up your server configuration file.
-
If it is running, stop the JBoss EAP server.
-
Back up the
EAP_HOME/standalone/configuration/standalone.xmlfile.
After you have completed testing this quickstart, you can replace this file to restore the server to its original configuration.
-
Open a terminal and navigate to the root of the JBoss EAP directory.
-
Start the JBoss EAP server with the default profile by typing the following command.
$ EAP_HOME/bin/standalone.shNoteFor Windows, use the EAP_HOME\bin\standalone.batscript.
-
Make sure JBoss EAP server is started.
-
Open a terminal and navigate to the root directory of this quickstart.
-
Type the following command to build the quickstart.
$ mvn clean package -
Type the following command to deploy the quickstart.
$ mvn wildfly:deploy
This deploys the logging/target/logging.war to the running instance of the server.
You should see a message in the server log indicating that the archive deployed successfully.
The application is running at the following URL: http://localhost:8080/logging/.
You will see the following message in the server console:
18:20:33,272 FATAL [org.jboss.as.quickstarts.logging.rest.LogListingResource] (default task-1) This is an FATAL message from 127.0.0.1:50130
18:20:34,530 ERROR [org.jboss.as.quickstarts.logging.rest.LogListingResource] (default task-1) This is an ERROR message from 127.0.0.1:50130
18:20:35,332 WARN [org.jboss.as.quickstarts.logging.rest.LogListingResource] (default task-1) This is an WARN message from 127.0.0.1:50130
18:20:36,254 INFO [org.jboss.as.quickstarts.logging.rest.LogListingResource] (default task-1) This is an INFO message from 127.0.0.1:50130
18:20:37,156 DEBUG [org.jboss.as.quickstarts.logging.rest.LogListingResource] (default task-1) This is an DEBUG message from 127.0.0.1:50130
18:20:38,003 TRACE [org.jboss.as.quickstarts.logging.rest.LogListingResource] (default task-1) This is an TRACE message from 127.0.0.1:50130The log files are located in the EAP_HOME/standalone/log log directory. At this point you should see the following log files.
-
server.log- This is the standard log produced by the application server. By default, it contains all the server log messages, including the server startup messages.
Now you have deployed the quickstart with the default configuration, you run a management CLI script to configure the logging subsystem and review the differences in the resulting log files.
-
Before you begin, make sure you do the following:
-
Back up the JBoss EAP standalone server configuration as described above.
-
Start the JBoss EAP server with the standalone default profile as described above.
-
-
Review the
configure-logging.clifile in the root of this quickstart directory. This script configures the logging subsystem in the server configuration file. It configures the file handlers, creates the logger for our quickstart and sets the level to TRACE. It also assigns the handlers for our quickstart to our logger. -
Open a new terminal, navigate to the root directory of this quickstart, and run the following command, replacing
EAP_HOMEwith the path to your server:$ EAP_HOME/bin/jboss-cli.sh --connect --file=configure-logging.cliNoteFor Windows, use the EAP_HOME\bin\jboss-cli.batscript.You should see the following result when you run the script:
The batch executed successfully
-
Make sure you start the JBoss EAP server with the standalone default profile as described above.
The log files are located in the EAP_HOME/standalone/log log directory. You should now see the 6 additional log files that are produced by this quickstart. They are listed below in hierarchical order from the largest file containing the most messages to the smallest file containing the least messages.
-
quickstart.trace.log -
quickstart.debug.log -
quickstart.info.log -
quickstart.warn.log -
quickstart.error.log -
quickstart.fatal.log
The following are the rest endpoint paths. Note these can be accessed from the index.html by clicking the buttons
-
/api/logs/trace -
/api/logs/debug -
/api/logs/info -
/api/logs/warn -
/api/logs/error -
/api/logs/fatal
The following describes what happens when you access this quickstart:
-
When you access one of the above endpoints, a simple message is logged.
-
Finally, the class file logs various levels, each to its own file as configured in
standalone.xml. Note that log levels are hierarchical. When set, all log levels above the specified level are logged as well. -
Common uses of the 6 log levels are outlined below. You should use the level that makes the most sense in your environment.
FATAL - Used to track critical system failures. When this log message is written, it is writing application error that has caused service to cease. This is the most narrow logging. ERROR - Used to track application errors that may cause one request to fail (not a service ceasement). WARN - Used for warnings. At this level, all *WARN*, *ERROR*, and *FATAL* messages are written. Use this level message as a predictive measure for possible forthcoming issues. INFO - This provides any information - state transition, object values, etc DEBUG - Turned on in any environment when a problem is occuring. The information captured may be throughput, communication, object values, etc. TRACE - Turned on in any environment where you are trying to follow an execution path, for optimization or debugging. This is the most broad logging level and all messages are written. -
To view log file differences for different logging levels, change the level for the "org.jboss.as.quickstarts.logging" logger from TRACE to DEBUG, INFO, WARN, ERROR, or FATAL, then access the application.
This quickstart includes integration tests, which are located under the src/test/ directory. The integration tests verify that the quickstart runs correctly when deployed on the server.
Follow these steps to run the integration tests.
-
Make sure JBoss EAP server is started.
-
Make sure the quickstart is deployed.
-
Type the following command to run the
verifygoal with theintegration-testingprofile activated.$ mvn verify -Pintegration-testing
When you are finished testing the quickstart, follow these steps to undeploy the archive.
-
Make sure JBoss EAP server is started.
-
Open a terminal and navigate to the root directory of this quickstart.
-
Type this command to undeploy the archive:
$ mvn wildfly:undeploy
You can restore the original server configuration using either of the following methods.
-
You can run the
remove-logging.cliscript provided in the root directory of this quickstart. -
You can manually restore the configuration using the backup copy of the configuration file.
-
Start the JBoss EAP server as described above.
-
Open a new terminal, navigate to the root directory of this quickstart, and run the following command, replacing
EAP_HOMEwith the path to your server:$ EAP_HOME/bin/jboss-cli.sh --connect --file=remove-logging.cliNoteFor Windows, use the EAP_HOME\bin\jboss-cli.batscript.
This script removes the log and file handlers from the logging subsystem in the server configuration. You should see the following result when you run the script:
{"outcome" => "success"}
{"outcome" => "success"}
{"outcome" => "success"}
{"outcome" => "success"}
{"outcome" => "success"}
{"outcome" => "success"}
{"outcome" => "success"}When you have completed testing the quickstart, you can restore the original server configuration by manually restoring the backup copy the configuration file.
-
If it is running, stop the JBoss EAP server.
-
Replace the
EAP_HOME/standalone/configuration/standalone.xmlfile with the backup copy of the file.
Instead of using a standard JBoss EAP server distribution, you can alternatively provision a JBoss EAP server to deploy and run the quickstart. The functionality is provided by the WildFly Maven Plugin, and you may find its configuration in the quickstart pom.xml:
<profile>
<id>provisioned-server</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.jboss.eap.plugins</groupId>
<artifactId>eap-maven-plugin</artifactId>
<configuration>
...
<feature-packs>
<feature-pack>
<location>org.jboss.eap:wildfly-ee-galleon-pack</location>
</feature-pack>
...
</feature-packs>
<layers>...</layers>
</configuration>
<executions>
<execution>
<goals>
<goal>package</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
</profile>|
Note
|
When built, the provisioned JBoss EAP server can be found in the |
Follow these steps to run the quickstart using the provisioned server.
-
Make sure the server is provisioned.
$ mvn clean package -
Start the JBoss EAP provisioned server, using the WildFly Maven Plugin
startgoal.$ mvn wildfly:start -
Type the following command to run the integration tests.
$ mvn verify -Pintegration-testing -
Shut down the JBoss EAP provisioned server.
$ mvn wildfly:shutdown
On OpenShift, the S2I build with Apache Maven uses an openshift Maven profile to provision a JBoss EAP server, deploy and run the quickstart in OpenShift environment.
The server provisioning functionality is provided by the EAP Maven Plugin, and you may find its configuration in the quickstart pom.xml:
<profile>
<id>openshift</id>
<build>
<plugins>
<plugin>
<groupId>org.jboss.eap.plugins</groupId>
<artifactId>eap-maven-plugin</artifactId>
<configuration>
...
<feature-packs>
<feature-pack>
<location>org.jboss.eap:wildfly-ee-galleon-pack</location>
</feature-pack>
<feature-pack>
<location>org.jboss.eap.cloud:eap-cloud-galleon-pack</location>
</feature-pack>
</feature-packs>
<layers>...</layers>
</configuration>
<executions>
<execution>
<goals>
<goal>package</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
</profile>You may note that it uses the cloud feature pack which enables a configuration tuned for the OpenShift environment.
This section contains the basic instructions to build and deploy this quickstart to JBoss EAP for OpenShift or JBoss EAP for OpenShift Online using Helm Charts.
-
You must be logged in OpenShift and have an
occlient to connect to OpenShift -
Helm must be installed to deploy the backend on OpenShift.
Once you have installed Helm, you need to add the repository that provides Helm Charts for JBoss EAP.
$ helm repo add jboss-eap https://jbossas.github.io/eap-charts/
"jboss-eap" has been added to your repositories
$ helm search repo jboss-eap
NAME CHART VERSION APP VERSION DESCRIPTION
jboss-eap/eap81 ... ... A Helm chart to build and deploy EAP 8.1 applicationsLog in to your OpenShift instance using the oc login command.
The backend will be built and deployed on OpenShift with a Helm Chart for JBoss EAP.
Navigate to the root directory of this quickstart and run the following command:
$ helm install logging -f charts/helm.yaml jboss-eap/eap81 --wait --timeout=10m0s
NAME: logging
...
STATUS: deployed
REVISION: 1This command will return once the application has successfully deployed. In case of a timeout, you can check the status of the application with the following command in another terminal:
oc get deployment loggingThe Helm Chart for this quickstart contains all the information to build an image from the source code using S2I on Java 17:
build:
uri: https://github.com/jboss-developer/jboss-eap-quickstarts.git
ref: 8.1.x
contextDir: logging
deploy:
replicas: 1This will create a new deployment on OpenShift and deploy the application.
If you want to see all the configuration elements to customize your deployment you can use the following command:
$ helm show readme jboss-eap/eap81Get the URL of the route to the deployment.
$ oc get route logging -o jsonpath="{.spec.host}"Access the application in your web browser using the displayed URL.
The integration tests included with this quickstart, which verify that the quickstart runs correctly, may also be run with the quickstart running on OpenShift.
|
Note
|
The integration tests expect a deployed application, so make sure you have deployed the quickstart on OpenShift before you begin. |
Run the integration tests using the following command to run the verify goal with the integration-testing profile activated and the proper URL:
$ mvn verify -Pintegration-testing -Dserver.host=https://$(oc get route logging --template='{{ .spec.host }}') |
Note
|
The tests are using SSL to connect to the quickstart running on OpenShift. So you need the certificates to be trusted by the machine the tests are run from. |