Introduction
In many situations, we need to change the logging level from WARN to DEBUG, then change it back to WARN after a period of time. There are few ways to do so as the following. Many unexperienced developers will change log4j2.xml file. For instance, if we want to log all the requests and responses for all HTTP Listener, we can change the log4j2.xml by add the following lines:
<AsyncLogger name="org.mule.module.http.internal.HttpMessageLogger" level="INFO"/>
<AsyncLogger name="com.ning.http" level="INFO" />
This approach works, but it is often very changing if not impossible. To change code in production environment should be considered as a last resort. There are other ways such as command line, or use web services.
< However all the above mentioned approach requires more effort the JMX approach, which is simplest way in my humble opinion. This article will demonstrate how we can achieve this.
Enable JMX For Mule Runtime
To enable jmx, we will need to update wrapper.conf, which is at ${MULE_HOME}/conf/wrapper.conf. Add the following lines:
wrapper.java.additional.50=-Dcom.sun.management.jmxremote wrapper.java.additional.50=-Dcom.sun.management.jmxremote=true wrapper.java.additional.51=-Dcom.sun.management.jmxremote.port=1099 wrapper.java.additional.53=-Dcom.sun.management.jmxremote.access.file=%MULE_HOME%/conf/jmxremote.access wrapper.java.additional.54=-Dcom.sun.management.jmxremote.password.file=%MULE_HOME%/conf/jmxremote.password wrapper.java.additional.56=-Dcom.sun.management.jmxremote.authenticate=true wrapper.java.additional.55=-Dcom.sun.management.jmxremote.ssl=false
The above configuration requires to create two files: jmxremote.access and jmxremote.password under ${MULE_HOME}/conf. The following are examples:
$cat jmxremote.access admin readwrite gary readonly $cat jmxremote.password admin admin gary gary
To enable ssl requires generate certificates. I will cover the topic later
Configure jvisualvm And Change Logging Level
jvisualvm comes with Java SDK. For the details about the setup you may refer to my blog . The most important thing is to make sure you install MBeans pluging. The following snapshot shows the details:You can traverse to the component at org.apache.logging.log4j2, under Loggers, you can change any log4j2 bean's log level as shown in the following snapshot:
In practice, you can do a lot of more with jvisualvm to inspect the mule runtime. I will cover more in my later blogs.
This comment has been removed by the author.
ReplyDeleteVery informative post for mulesoft developers.You can also visit goformule.com for mulesoft stuff.
ReplyDelete