{"id":557,"date":"2022-09-01T15:42:30","date_gmt":"2022-09-01T15:42:30","guid":{"rendered":"https:\/\/blogs.ua.es\/jpm33\/?p=557"},"modified":"2022-09-08T11:25:00","modified_gmt":"2022-09-08T11:25:00","slug":"log-de-mensajes-http-en-mule-4","status":"publish","type":"post","link":"https:\/\/blogs.ua.es\/jpm33\/2022\/09\/01\/log-de-mensajes-http-en-mule-4\/","title":{"rendered":"Log de mensajes HTTP en Mule 4"},"content":{"rendered":"\r\n<h1>Introducci\u00f3n<\/h1>\r\n<p>Mule es ESB (Enterprise Service Bus) Se usa para enviar\/recibir mensajes heterog\u00e9neos entre diferentes productos\/consumidores.<br \/><br \/>Admite muchos componentes de transporte y servicio como JMS, SOAP, JBI, BPEL, EJB, AS\/400, HTTP, JDBC, TCP, UDP, SMTP, FILE, FTP y m\u00e1s.<br \/><br \/>Como en Internet el idioma padre es HTTP vamos a ver c\u00f3mo hacer logging de las peticiones y respuestas HTTP que pasan por mule.<\/p>\r\n<p><!--more--><\/p>\r\n<h1>Log de HTTP con log4j<\/h1>\r\n<p>Vamos a suponer un caso sencillo, done una petici\u00f3n HTTP entrante produce una HTTP saliente.<\/p>\r\n<p>En mule el flujo podr\u00eda ser as\u00ed:<\/p>\r\n<p><img decoding=\"async\" src=\"https:\/\/docs.mulesoft.com\/mule-runtime\/4.4\/_images\/mruntime-rest-api-example-1.png\" alt=\"ConsumeRestAPI flow with HTTP Listener and HTTP Request Connectors\" \/><\/p>\r\n<p>No es el objetivo de esta entrada dar una clase de mule, basta decir que las bolas azules unas es un &#8220;<strong>HTTP Listener<\/strong>&#8221; que escucha los mensajes enviados a mule y un &#8220;<strong>HTTP Request<\/strong>&#8221; que se encarga de enviar peticiones HTTP desde mule a otra aplicaci\u00f3n. Ambos compoenntes, necesitan de otro que no es gr\u00e1fico que se llama &#8220;Configuration&#8221;.<\/p>\r\n<p>Voy a suponer el caso que tengo una configuraci\u00f3n para el listener que se llama <strong>HTTP_Listener_config<\/strong> y otra para el Request que se llama a su vez <strong>HTTP_Request_configuration<\/strong>. En este caso el fichero <strong>log4j.xml<\/strong> para observar un fichero de log y un log por consola ser\u00eda algo as\u00ed:<\/p>\r\n<pre>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;<br \/>&lt;Configuration&gt;<br \/><br \/>    &lt;!--These are some of the loggers you can enable. <br \/>        There are several more you can find in the documentation. <br \/>        Besides this log4j configuration, you can also use Java VM environment variables<br \/>        to enable other logs like network (-Djavax.net.debug=ssl or all) and <br \/>        Garbage Collector (-XX:+PrintGC). These will be append to the console, so you will <br \/>        see them in the mule_ee.log file. --&gt;<br \/><br \/>    &lt;Appenders&gt;<br \/>    <br \/>      &lt;Console name=\"Console\" target=\"SYSTEM_OUT\"&gt;<br \/>           &lt;PatternLayout pattern=\"%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n\"\/&gt;<br \/>       &lt;\/Console&gt;    <br \/>    <br \/>        &lt;RollingFile name=\"file\" fileName=\"${sys:mule.home}${sys:file.separator}logs${sys:file.separator}say-hello-mule4-docker.log\" <br \/>                 filePattern=\"${sys:mule.home}${sys:file.separator}logs${sys:file.separator}say-hello-mule4-docker-%i.log\"&gt;<br \/>            &lt;PatternLayout pattern=\"%-5p %d [%t] %X{correlationId}%c: %m%n\" \/&gt;<br \/>            &lt;SizeBasedTriggeringPolicy size=\"10 MB\" \/&gt;<br \/>            &lt;DefaultRolloverStrategy max=\"10\"\/&gt;<br \/>        &lt;\/RollingFile&gt;<br \/>   &lt;\/Appenders&gt;<br \/>    <br \/>    <br \/>    &lt;Loggers&gt;<br \/>        <br \/>        &lt;!-- Http Logger shows wire traffic on DEBUG. --&gt;<br \/>        &lt;!--AsyncLogger name=\"org.mule.service.http.impl.service.HttpMessageLogger\" level=\"DEBUG\" \/--&gt;<br \/>        &lt;AsyncLogger name=\"org.mule.service.http\" level=\"WARN\"\/&gt;<br \/>        &lt;AsyncLogger name=\"org.mule.extension.http\" level=\"WARN\"\/&gt;<br \/>    <br \/>        &lt;!-- Mule classes --&gt;        <br \/>        &lt;AsyncLogger name=\"org.mule\" level=\"INFO\"\/&gt;<br \/>        &lt;AsyncLogger name=\"com.mulesoft\" level=\"INFO\"\/&gt;<br \/>         <br \/>         &lt;!--  debug config to log HTTP in\/out messages --&gt;<br \/>        &lt;AsyncLogger name=\"org.mule.service.http.impl.service.HttpMessageLogger.<strong>HTTP_Listener_config<\/strong>\" level=\"DEBUG\"\/&gt;<br \/>        &lt;AsyncLogger name=\"org.mule.service.http.impl.service.HttpMessageLogger.http.requester.<strong>HTTP_Request_configuration<\/strong>\" level=\"DEBUG\"\/&gt;<br \/>        &lt;AsyncLogger name=\"org.mule.service.http.impl.service.HttpMessageLogger.http.requester.<strong>HTTP_Request_configuration_with_token<\/strong>\" level=\"DEBUG\"\/&gt;<br \/>  <br \/>        &lt;AsyncRoot level=\"INFO\"&gt;<br \/>           &lt;AppenderRef ref=\"Console\"\/&gt;<br \/>            &lt;AppenderRef ref=\"file\" \/&gt;<br \/>        &lt;\/AsyncRoot&gt;<br \/>        <br \/>    &lt;\/Loggers&gt;<br \/>&lt;\/Configuration&gt;<\/pre>\r\n<p>Importante las l\u00edneas, donde vemos c\u00f3mo se indica el package completo con el nombre de los componentes a activar su log.<\/p>\r\n<pre>&lt;AsyncLogger name=\"org.mule.service.http.impl.service.HttpMessageLogger.HTTP_Listener_config\" level=\"DEBUG\"\/&gt;<br \/>&lt;AsyncLogger name=\"org.mule.service.http.impl.service.HttpMessageLogger.http.requester.HTTP_Request_configuration\" level=\"DEBUG\"\/&gt;<br \/>&lt;AsyncLogger name=\"org.mule.service.http.impl.service.HttpMessageLogger.http.requester.HTTP_Request_configuration_with_token\" level=\"DEBUG\"\/&gt;<\/pre>\r\n<h1>REFERENCIAS<\/h1>\r\n<ol>\r\n<li><a href=\"https:\/\/docs.mulesoft.com\/mule-runtime\/4.4\/rest-api-examples\">https:\/\/docs.mulesoft.com\/mule-runtime\/4.4\/rest-api-examples<\/a><\/li>\r\n<li><a href=\"https:\/\/docs.mulesoft.com\/mule-runtime\/4.4\/consume-data-from-an-api\">https:\/\/docs.mulesoft.com\/mule-runtime\/4.4\/consume-data-from-an-api<\/a><\/li>\r\n<\/ol>\r\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n Mule es ESB (Enterprise Service Bus) Se usa para enviar\/recibir mensajes heterog\u00e9neos entre diferentes productos\/consumidores. Admite muchos componentes de transporte y servicio como JMS, SOAP, JBI, BPEL, EJB, AS\/400, HTTP, JDBC, TCP, UDP, SMTP, FILE, FTP y m\u00e1s. Como &hellip; <a href=\"https:\/\/blogs.ua.es\/jpm33\/2022\/09\/01\/log-de-mensajes-http-en-mule-4\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":3080,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[408,374],"tags":[154,408,236718,23],"class_list":["post-557","post","type-post","status-publish","format-standard","hentry","category-java","category-programacion","tag-ingenieria","tag-java","tag-programacion-2","tag-web"],"_links":{"self":[{"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/posts\/557","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/users\/3080"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/comments?post=557"}],"version-history":[{"count":5,"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/posts\/557\/revisions"}],"predecessor-version":[{"id":567,"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/posts\/557\/revisions\/567"}],"wp:attachment":[{"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/media?parent=557"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/categories?post=557"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/tags?post=557"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}