Contact Us 1-800-596-4880

Logging

Mule Runtime Engine versions 3.5, 3.6, and 3.7 reached End of Life on or before January 25, 2020. For more information, contact your Customer Success Manager to determine how you can migrate to the latest Mule version.

The less high-tech and most popular of all debugging techniques is the usage of log statements in order to follow the evolution of an application’s state. In Mule, the state you’re interested in resides in the messages that are flowing through your configuration and, possibly, custom code.

If you’re running your Mule configuration from Anypoint Studio, the log outputs are visible right in Anypoint Studio’s console window. If you’re running Mule from the command line, the logs are visible in your OS console.

Mule’s standalone logging configuration is stored in <Mule Installation Directory>/conf/log4j2.xml: edit this file if you need to change the verbosity of the log output.

Note: If you are using Anypoint Studio, the log output appears in the .mule directory of your Studio workspace. For example on a Mac, for an application called Basic Tutorial, the log output is in this file:

/Users/me/AnypointStudio/workspace/.mule/logs/basic_tutorial.log

The log component is a quick and easy way to log the payload of an in-flight message. Add it anywhere in a message flow you want to probe your message:

<flow name="FlowWithLoggers">
  <http:listener config-ref="HTTP_Listener_Configuration1" path="hello" doc:name="HTTP"/>
  <logger level="INFO" doc:name="Logger-before"/>
  <base64-encoder-transformer/>
  <logger level="INFO" doc:name="Logger-after"/>
  <vm:outbound-endpoint path="next.in.line" />
</flow>

If you need more details about the message, a simple scripted logging component like the following can come handy:

<scripting:script name="Logger" engine="groovy">
  <scripting:text>log.info(message); log.info(payload); message</scripting:text>
</scripting:script>

You can refer to it from anywhere in your flows:

<flow name="FlowWithLoggers">
  <http:listener config-ref="HTTP_Listener_Configuration1" path="hello" doc:name="HTTP"/>
  <scripting:component script-ref="Logger" />
  <base64-encoder-transformer/>
  <scripting:component script-ref="Logger" />
  <vm:outbound-endpoint path="next.in.line" />
</flow>

For more on how to use the Logger component in Studio, see Logger Component Reference

You can configure what gets logged, where it gets logged, and how by editing a configuration file that sits in your project. For a description of what you can do through this and instructions on how to set it up, see Logging in Mule.