Skip to content

Latest commit

 

History

History
1376 lines (1167 loc) · 53.4 KB

File metadata and controls

1376 lines (1167 loc) · 53.4 KB

logging: Example That Sets Up Different Logging Levels

The logging quickstart demonstrates how to configure different logging levels in JBoss EAP.

What is it?

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.

System Requirements

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.

Use of the EAP_HOME and QUICKSTART_HOME Variables

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.

Back Up the JBoss EAP Standalone Server Configuration

Before you begin, back up your server configuration file.

  1. If it is running, stop the JBoss EAP server.

  2. Back up the EAP_HOME/standalone/configuration/standalone.xml file.

After you have completed testing this quickstart, you can replace this file to restore the server to its original configuration.

Start the JBoss EAP Standalone Server

  1. Open a terminal and navigate to the root of the JBoss EAP directory.

  2. Start the JBoss EAP server with the default profile by typing the following command.

    $ EAP_HOME/bin/standalone.sh 
    Note
    For Windows, use the EAP_HOME\bin\standalone.bat script.

Build and Deploy the Quickstart

  1. Make sure JBoss EAP server is started.

  2. Open a terminal and navigate to the root directory of this quickstart.

  3. Type the following command to build the quickstart.

    $ mvn clean package
  4. 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.

Access the Application

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:50130

Check the Server Logs

The 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.

Configure the Server

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.

  1. Before you begin, make sure you do the following:

  2. Review the configure-logging.cli file 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.

  3. Open a new terminal, navigate to the root directory of this quickstart, and run the following command, replacing EAP_HOME with the path to your server:

    $ EAP_HOME/bin/jboss-cli.sh --connect --file=configure-logging.cli
    Note
    For Windows, use the EAP_HOME\bin\jboss-cli.bat script.

    You should see the following result when you run the script:

    The batch executed successfully

Recheck the Server Logs

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:

  1. When you access one of the above endpoints, a simple message is logged.

  2. 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.

  3. 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.
  4. 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.

Run the Integration Tests

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.

  1. Make sure JBoss EAP server is started.

  2. Make sure the quickstart is deployed.

  3. Type the following command to run the verify goal with the integration-testing profile activated.

    $ mvn verify -Pintegration-testing 

Undeploy the Quickstart

When you are finished testing the quickstart, follow these steps to undeploy the archive.

  1. Make sure JBoss EAP server is started.

  2. Open a terminal and navigate to the root directory of this quickstart.

  3. Type this command to undeploy the archive:

    $ mvn wildfly:undeploy

Restore the JBoss EAP Standalone Server Configuration

You can restore the original server configuration using either of the following methods.

Restore the JBoss EAP Standalone Server Configuration by Running the JBoss CLI Script

  1. Start the JBoss EAP server as described above.

  2. Open a new terminal, navigate to the root directory of this quickstart, and run the following command, replacing EAP_HOME with the path to your server:

    $ EAP_HOME/bin/jboss-cli.sh --connect --file=remove-logging.cli
    Note
    For Windows, use the EAP_HOME\bin\jboss-cli.bat script.

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"}

Restore the JBoss EAP Standalone Server Configuration Manually

When you have completed testing the quickstart, you can restore the original server configuration by manually restoring the backup copy the configuration file.

  1. If it is running, stop the JBoss EAP server.

  2. Replace the EAP_HOME/standalone/configuration/standalone.xml file with the backup copy of the file.

Building and running the quickstart application with provisioned JBoss EAP server

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 target/server directory, and its usage is similar to a standard server distribution, with the simplification that there is never the need to specify the server configuration to be started.

Follow these steps to run the quickstart using the provisioned server.

Procedure
  1. Make sure the server is provisioned.

    $ mvn clean package
  2. Start the JBoss EAP provisioned server, using the WildFly Maven Plugin start goal.

    $ mvn wildfly:start 
  3. Type the following command to run the integration tests.

    $ mvn verify -Pintegration-testing 
  4. Shut down the JBoss EAP provisioned server.

    $ mvn wildfly:shutdown

Building and running the quickstart application with OpenShift

Build the JBoss EAP Source-to-Image (S2I) Quickstart to OpenShift with Helm Charts

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.

Getting Started with JBoss EAP for OpenShift and Helm Charts

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.

Prerequisites

  • You must be logged in OpenShift and have an oc client 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 applications

Deploy the JBoss EAP Source-to-Image (S2I) Quickstart to OpenShift with Helm Charts

Log 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: 1

This 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 logging

The 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: 1

This 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/eap81

Get 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.

Run the Integration Tests with OpenShift

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.

Undeploy the JBoss EAP Source-to-Image (S2I) Quickstart from OpenShift with Helm Charts

$ helm uninstall logging