---
schema_version: "1"
id: dfff9992de384fee6c0e4e9c05d132bdc05ab221827e9c667fdab547ec1cb7d3
title: Message Logging Policy
collection: mulesoft
version: current
locale: en-us
portal_url: https://docs.salesforce.com/mulesoft/current/en-us/gateway/latest/policies-included-message-logging.md
canonical_url: https://docs.mulesoft.com/gateway/latest/policies-included-message-logging
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 83744e38442b1a02f1bc08c6f98a1c8ce7444c5683339ccc043a7124d734d4e1
description: MuleSoft Documentation Site
release: "1.14"
latest: true
---
# Message Logging Policy

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>Policy name</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Message Logging</p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>Summary</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Logs custom messages using information from incoming requests, responses from the backend, or information from other policies applied to the same API endpoint</p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>Category</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Troubleshooting</p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>First Omni Gateway version available</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v1.0.0</p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>Release Notes</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://docs.mulesoft.com/release-notes/gateway/policies/message-logging-release-notes" class="xref page">Message Logging</a></p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-middle"><p class="tableblock"><strong>Returned Status Codes</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">No return codes exist for this policy</p></td>
</tr>
</tbody>
</table>

## [](#summary)Summary

The Message Logging policy logs custom messages using information from incoming requests, responses from the backend, or information from other policies applied to the same API endpoint.

<table><tbody><tr><td class="icon"><i class="fa icon-note" title="Note"></i></td><td class="content">To use multiple log levels for different configurations, add multiple configurations within a single Message Logging policy.</td></tr></tbody></table>

## [](#prerequisites)Prerequisites

You must have the Anypoint Platform Organization Administrators role or have permission to create or manage APIs.

## [](#configuring-policy-parameters)Configuring Policy Parameters

### [](#local-mode)Omni Gateway Local Mode

When you apply the policy via declarative configuration files, Refer to the following policy definition and table of parameters:

\- policyRef:
    name: message-logging-flex
  config:
    loggingConfiguration: <array>
      - itemName: <string> // REQUIRED
        itemData: //REQUIRED
          message: <dataweave> // REQUIRED
          conditional: <dataweave> // OPTIONAL
          category: <string> // OPTIONAL
          level: <string> // REQUIRED
          firstSection: <bool> // OPTIONAL
          secondSection: <bool> // OPTIONAL
    enableDataMasking: <bool> // OPTIONAL
    dataMasking: // OPTIONAL
      entities:
        - <string> // Supported values: Email, US SSN, Credit Card, Phone Number
      customPatterns:
        - name: <string>
          pattern: <string>

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Parameter</th>
<th class="tableblock halign-left valign-top">Required or Optional</th>
<th class="tableblock halign-left valign-top">Default Value</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>loggingConfiguration</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Required</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>N/A</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Array of configurations</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>loggingConfiguration.itemName</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Required</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>N/A</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Configuration name.</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>loggingConfiguration.itemData.message</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Required</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>N/A</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>DataWeave expression that resolves to the message log. To learn more about supported DataWeave expressions, see <a href="#dataweave-support">DataWeave Expressions Support</a>.</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>loggingConfiguration.itemData.conditional</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Optional</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>true</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>DataWeave expression that resolves to whether the message should be logged. To learn more about supported DataWeave expressions, see <a href="#dataweave-support">DataWeave Expressions Support</a>.</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>loggingConfiguration.itemData.category</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Optional</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Default category</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Log message prefix that indicates the package and class where the log is executed.</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>loggingConfiguration.itemData.level</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Required</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>N/A</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Defines the level of message to log: <code>INFO</code>, <code>WARN</code>, <code>ERROR</code>, or <code>DEBUG</code><br>
For more information, see <a href="#severity-levels">Message Logging Severity Levels</a>.</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>loggingConfiguration.itemData.firstSection</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Optional</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>true</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Boolean that indicates if messages are logged before the API endpoint is called, taking into account the order in which this policy is applied.</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>loggingConfiguration.itemData.secondSection</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Optional</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>false</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Boolean that indicates if messages are logged after the API endpoint is called, taking into account the order in which this policy is applied.</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>enableDataMasking</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Optional</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>false</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>When enabled, the policy detects and masks configured PII in log messages before they are written. Request and response bodies are forwarded to the upstream service unchanged.</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>dataMasking.entities</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Optional</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>[]</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>List of built-in PII types to mask. Supported values: <code>Email</code>, <code>US SSN</code>, <code>Credit Card</code>, and <code>Phone Number</code>.</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>dataMasking.customPatterns</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Optional</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>[]</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>List of custom patterns to mask when built-in PII detection doesn’t cover the value. Each pattern must have a <code>name</code> and a <code>pattern</code> (regular expression) property.</p>
</div></div></td>
</tr>
</tbody>
</table>

#### [](#resource-configuration-example)Resource Configuration Example

\- policyRef:
    name: message-logging-flex
  config:
    loggingConfiguration:
      - itemName: "Config 1"
        itemData:
          message: "#\[payload\]"
          conditional: "#\[attributes.queryParams\['QueryParam'\]=='someValue'\]"
          level: "ERROR"
          firstSection: true
      - itemName: "Config 2"
        itemData:
          message: "#\['literal string'\]"
          level: "WARN"
          secondSection: true
          firstSection: true

### [](#connected-mode)Managed Omni Gateway and Omni Gateway Connected Mode

When you apply the policy from the UI, the following parameters are displayed:

![A form with text fields and checkboxes to set up new logging configurations](/mulesoft/current/en-us/gateway/latest/_images/apim-message-logging-policy-ui.png)

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Parameter</th>
<th class="tableblock halign-left valign-top">Description</th>
<th class="tableblock halign-left valign-top">Required?</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Message</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A DataWeave expression to use for extracting the message to be logged. To learn more about supported DataWeave expressions, see <a href="#dataweave-support">DataWeave Expressions Support</a>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Required</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Conditional</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A DataWeave Boolean expression used to specify whether a message is to be logged. To learn more about supported DataWeave expressions, see <a href="#dataweave-support">DataWeave Expressions Support</a>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Optional</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Category</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A prefix in the log message that indicates the package and class where the log is executed.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Optional</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Level</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The level of message to log: INFO, WARN, ERROR, or DEBUG.<br>
For more information, see <a href="#severity-levels">Message Logging Severity Levels</a>.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Required</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Before Calling API</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Set to cause your logging policy to log messages before the API endpoint is called, taking into account the order in which this policy is applied.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Optional</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">After Calling API</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Set to cause your logging policy to log messages after the API endpoint is called, taking into account the order in which this policy is applied.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Optional</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Enable data masking</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Detect and mask configured PII before writing log messages. Request and response bodies are forwarded to the upstream service unchanged.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Optional</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">PII Detection</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Select built-in PII types to mask: Email, US SSN, Credit Card, and Phone Number.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Optional</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Custom Patterns</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Add a regular expression pattern to mask a value that built-in PII detection doesn’t cover. Each pattern has a name and a regex.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Optional</p></td>
</tr>
</tbody>
</table>

#### [](#example-of-message-logging-policy-configured-from-the-ui)Example of Message Logging Policy Configured from the UI

To better understand how to use the Message Logging policy, consider a fictional retail clothier named Les Vetments. To successfully run its e-commerce portal, Les Vetments must audit the status code of the requests made on its website.

For example, if a customer buys or returns a product, or if the company adds or removes a product from its catalog, the transactions must be logged. The IT manager at Les Vetments applies the Message Logging policy to the company APIs to enable logging and viewing any data or transaction changes without making any modifications to the code.

To log the attributes of the incoming and outgoing HTTP message, Les Vetments applies the Message Logging policy to the API with the following UI configurations:

- **Message**: #\[attributes\]
    
    The attributes in the payload must be logged.
- **Conditional**: Blank
    
    Because Les Vetments requires all attributes, no expression to filter messages is specified.
- **Category**: Blank
    
    No prefix is required in the log sentence.
- **Level**: Info
    
    All types of messages are to be logged. The Info log level also includes Warn, Error, or Debug log messages.
- **Before Calling API**: Checked
    
    All transactions that occur before the API is called are to be logged.
- **After calling API**: Checked
    
    All transactions that occur after the API is called are to be logged.

Following this configuration, whenever customers access the Les Vetments catalogue or add or remove items from their carts, or when an item is added or removed from the Les Vetments catalog, logs are generated:

```text
**********************************************************************
* Policy: message-logging-1351146-proxy                              *
* OS encoding: UTF-8, Mule encoding: UTF-8                           *
*                                                                    *
**********************************************************************
21:56:50.147     11/30/2020     Worker-0     [MuleRuntime].uber.06: [message-logging-771181-proxy].771181-message-logging.CPU_LITE @71625864     INFO
event:184152a0-3370-11eb-b732-0a8c1820c088 org.mule.extension.http.api.HttpRequestAttributes
{
   Request path=/proxy/1
   Raw request path=/proxy/1
   Method=GET
   Listener path=/proxy/*
   Local Address=/172.25.159.101:8081
   Query String=
   Relative Path=/proxy/1
   Masked Request Path=/1
   Remote Address=/18.191.37.179:21836
   Request Uri=/proxy/1
   Raw request Uri=/proxy/1
   Scheme=http
   Version=HTTP/1.1
   Headers=[
      host=logging-policy.us-e2.cloudhub.io
      x-real-ip=204.14.236.154
      accept=*/*
      user-agent=curl/7.54.0
      x-forwarded-for=204.14.236.154
      x-forwarded-port=80
      x-forwarded-proto=http
      x-sigsci-agentresponse=200
      x-sigsci-mac=7caf3820a5c07d06ef827f1565678167
   ]
   Query Parameters=[]
   URI Parameters=[]
}
21:56:50.254     11/30/2020     Worker-0     [MuleRuntime].uber.07: [logging-policy].proxy.CPU_LITE @f0ce617     INFO
event:184152a0-3370-11eb-b732-0a8c1820c088 org.mule.extension.http.api.HttpResponseAttributes
{
   Status Code=200
   Reason Phrase=OK
   Headers=[
      date=Tue, 01 Dec 2020 00:56:50 GMT
      content-type=application/json; charset=utf-8
      set-cookie=__cfduid=d8afa23a4627ebef39cbc54fea223cb231606784210; expires=Thu, 31-Dec-20 00:56:50 GMT; path=/; domain=.typicode.com; HttpOnly; SameSite=Lax
      x-powered-by=Express
      x-ratelimit-limit=1000
      x-ratelimit-remaining=999
      x-ratelimit-reset=1606784265
      vary=Origin, Accept-Encoding
      access-control-allow-credentials=true
      cache-control=max-age=43200
      pragma=no-cache
      expires=-1
      x-content-type-options=nosniff
      etag=W/"53-hfEnumeNh6YirfjyjaujcOPPT+s"
      via=1.1 vegur
      cf-cache-status=MISS
      accept-ranges=bytes
      cf-request-id=06bd666d0a0000386b7a1fc000000001
      expect-ct=max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
      report-to={"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report?s=qUAIXoQ7qqqvFzjcwGrmK2r2PcSfDZ75jFJd0Gi0BLBUMHAcnC9wJ9I%2FEHJtk%2Bra%2FXWqkA%2F5%2FlzoWoC6YS2Lew%2BqKgjhaphHqx5WrZ0CKHMalhcM9it%2Fks0qzQGwbsRzQg%3D%3D"}],"group":"cf-nel","max_age":604800}
      nel={"report_to":"cf-nel","max_age":604800}
      cf-ray=5fa8d9c1a8c6386b-IAD
   ]
}
12:18:31.770     11/18/2020     Worker-0     agw-policy-set-deployment.01     INFO
Applied policy message-logging-1351146 version 1.0.0 to API testLoggingNew-v1-v1:16481163 (16481163) in application messagelog
```

To log headers, Les Vetments uses the following code snippet in the **Message** field:

`#[attributes.headers]`

To customize the log messages based on the event and the action performed, Les Vetments uses the following code snippet in the **Message** field:

`#['User ' authentication.clientId ' performed action ' attributes.method ' on ' attributes.requestPath ' with Payload: ' ++ payload]`

## [](#dataweave-support)DataWeave Expressions Support

The Message Logging policy supports the [standard DataWeave Expressions supported by Omni Gateway policies](https://docs.mulesoft.com/gateway/latest/policies-dataweave-support) and the following additional [`vars`](https://docs.mulesoft.com/dataweave/latest/dataweave-variables-context) DataWeave expressions. Format the following expressions `[vars.<expressions>]`, for example `[vars.orgId]`:

- `orgId`
- `masterOrgId`
- `envId`
- `apiId`
- `apiName`
- `apiInstanceName`
- `apiVersion`
- `receivedTs` (rfc3339)
- `repliedTs` (rfc3339, only available in request context)
- `runtimeVersion` (For example: `v1.7.0`)
- `hostId` (For example: `my-host`)
- `reqId` (Referred to as `traceId` in Omni Gateway logs)
- `requestDisposition` (`PROCESSED` or `VIOLATION`, only available in request context)
- `request.remoteAddress`
- `request.method`
- `request.requestPath`
- `request.headers` (all request headers)
- `violation.clientId` (Only available in response context)
- `violation.clientName` (Only available in response context)
- `violation.policyName` (Only available in response context)
- `violation.violationType` (`VIOLATION` or `ERROR`, only available in response context)

## [](#how-this-policy-works)How This Policy Works

Logging a policy consists of the following sequence:

1. A request is sent to the API.
2. The message is logged if the following conditions are true:
    
    - The level and category of the log defined in the policy are included in the logger defined in the configuration file.
    - Either the conditional field of the policy was not set, or was set and the condition was met.
3. The API response is returned. Message Logging Policy does not interfere with the execution of any policy nor its flow.
4. The message appears in the application log.

## [](#about-the-logging-format)About the Logging Format

A message log uses the following format:

`<date> [flex-gateway-envoy][<level>] wasm log <policy-name>.default.<api-name>.default.svc main: [req: <request uuid>] [accessLog] <message>`

- `policy-name`: displays the name of the policy binding:
- `api-name`: displays the name of the api instance:
- `request uuid`: displays a unique identifier for the request that triggered the message.

## [](#logging-states-during-events)Logging States During Events

Message logging occurs at specific intervals during a request flow:

- Before logging an API flow:
    
    ![State before logging an API flow](/mulesoft/current/en-us/gateway/latest/_images/apim-message-logging-policy-states-1.png)
- After logging an API flow:
    
    ![State after logging an API flow](/mulesoft/current/en-us/gateway/latest/_images/apim-message-logging-policy-states-2.png)
- Error handler after API flow:
    
    ![State after the error handler executes](/mulesoft/current/en-us/gateway/latest/_images/apim-message-logging-policy-states-3.png)

## [](#severity-levels)Message Logging Severity Levels

When you configure a Message Logging policy for your API instance, you can assign a severity level. Each severity level includes a specific set of information in the log report.

Log reports include the severity level you select and the following levels on the hierarchy.

For example, if you select DEBUG, the log reports include the DEBUG severity level as well as the INFO, WARN, and ERROR severity levels. However, if you select ERROR, the log reports include only error messages. The following table describes the type of information included in the logs for each severity level:

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 16.6666%;">
<col style="width: 83.3334%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Log Severity Level</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>DEBUG</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Tracing information used by application developers.</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>INFO</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Informational messages that highlight the progress of the application.</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>WARN</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Potentially harmful situations that indicate potential problems.</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>ERROR</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Events that prevent normal program execution but might allow the application to continue running.</p>
</div></div></td>
</tr>
</tbody>
</table>