The Liberty web server is used by many IBM products on z/OS, for example z/OSMF, MQSeries and z/OSConnect (but not Zowe).
When using Zowe, I struggled finding out what data was input to the server. As usual, when you have found the answer it is easy.
Once it worked, I had
<httpAccessLogging id="accessLogging"
logFormat="%a %s ET=%D %r i=%i c=%C "
enabled="true"
/>
<httpEndpoint id="defaultHttpEndpoint"
accessLoggingRef="accessLogging"
httpPort="9080"
httpsPort="10443"
/>
Where the httpEndpoint defines the port 10443 , and references httpAccessLogging.
It one point I had two ports defined for https. I separated the output for each port using
filepath="${server.output.dir}/logs/http_10443_access.log"
within the httpAccessLogging definition, to output the data to a specific file to match the port.
What data is output?
You can control what data is output. I used logFormat to output what I was interested in.
logFormat="%a %s ET=%D %r i=%i c=%C "
Where
- %a is the remote IP address 10.1.0.2
- %s is the status – if it worked the value is 200.
- ET=%D. This is the duration of the request in microseconds. It appears as ET=667601
- %r the first line of the request POST /ibmmq/rest/v1/admin/action/qmgr/CSQ9/mqsc HTTP/1.
- i=%i the header name from the request. My request did not have one so this comes out as i=-
- c=%C gives the cookies. You can request a specific cookie. My output had c=jwtToken:eyJraWQiOiJhYVBkRzd5N…. which is the JSON Web Token. To see the contents, I took this token, and pasted it into http:jwt.io.
You can ask for the datetime, but this comes out as a long string with year,month, day hh:mm:ss.uuuuuu. I found the year month and day were not needed, but I could not find how to display just the time.
The output from the above format was
10.1.0.2 200 ET=667601 POST /ibmmq/rest/v1/admin/action/qmgr/CSQ9/mqsc HTTP/1.1 i=- c=jwtToken:eyJraWQiOiJhYVBkRzd5NmZETk5UT....