What is the preferred / best way of logging the Request and Response of REST calls in Intersystems Cache ?

I want to log the input request and response to the REST call.

There is an option for SOAP web service ^ISCSOAP("Log").

Is there anything similar  for REST services in Cache ? Or what is the preferred way of logging the REST calls.

 

  • 0
  • 0
  • 77
  • 0
  • 3

Answers

I find the easiest way is to log into the CSP Gateway for the web server you are using.  If this is a development machine and you are using the stripped down web server internal to Cache you can access this from the management portal.  The path is System Adminstration -> Configuration -> CSP Gateway Management.  If you looking to do this against the traffic on an external web server then you need to the path to the Module.xxx.  On my Windows VM this is http://192.168.x.xxx/csp/bin/Systems/Module.cxw.

You will need the Web Gateway Management username and password.  The user is typically CSPSystem.  Once logged in look for the View HTTP Trace on the left hand menu.

 

Click on that and you will see a screen with 'Trace OFF' and 'Trace ON' at the top of the left hand menu.  You will also see options to refresh and clear.  Below that will appear any requests that have been traced. This is probably blank at this time.  Click Trace ON (it should change to RED.  Now go make a request that you want to trace.  Once your request is complete go back and turn off the trace so you don't get a bunch of requests that have nothing to do with what you want to examine.  I did this and made a request for the System Management Portal.  Here is the list I get.

Note that I see two requests.  Only one is what I want to look at which, in my case is the first.  When you select a trace you will see the request a the top followed by the response.  Note if the body of the response is not readable you likely have gzip compression on.  Go to the Application settings in the web gateway and turn this off to actually be able to see the body.  Remember to turn it back on later though.

Here is my results (truncated).  Hope this helps you

 

The HS.FHIR.REST.Handler class has  the LogCSPRequest and LogCSPResponse methods which have examples of ISC Soap logging  from within the code.  It is easier to use the GUI as mentioned by Rich, but if you have enormous amounts of traffic this may be worth investigation.