Tomcat server can be configured to use different type of logging systems, the server has default logging configuration and can be configured to use log4j. Tomcat can also create access logs based on the Access Log Valve.
...
In XpoLog such pattern (combined) will be translated into:
{geoiptext:Client IPRemoteHost,ftype=remoteip;type=;,} {stringtext:Remote Log Namelogname,ftype=remotelog;,} {stringtext:Remote User,ftype=remoteuser;,} [{date:Date,locale=en;,dd/MMM/yyyy:HH:mm:ss z}] "{choice:Method,ftype=reqmethod;,GET;POST;HEAD} {stringurl:URL,paramsFtype=querystring;ftype=requrl;,}{block,start,emptiness=true}?{string:Query,ftype=querystringparamsName=Query;,} {block,end,emptiness=true} {string:reqprotocol,ftype=reqprotocol;,}" {number:StatusResponseStatus,ftype=respstatus;,} {number:Bytes Sent,ftype=bytesent;,} } "{string:RefererQuery,ftype=refererquery;,}{regexp:Referer,ftype=referer;refName=RefererQuery,^([\w-]+://[^?]+|/[^?]+)}" "{string:User Agent,ftype=useragent;,}"{eoe}
...
In XpoLog such pattern (common) will be translated into:
{geoiptext:Client IPRemoteHost,ftype=remoteip;type=;,} {stringtext:Remote Log Namelogname,ftype=remotelog;,} {stringtext:Remote User,ftype=remoteuser;,} [{date:Date,locale=en;,dd/MMM/yyyy:HH:mm:ss z}] "{choice:Method,ftype=reqmethod;,GET;POST;HEAD} {stringurl:URL,paramsFtype=querystring;ftype=requrl;paramsName=Query;,} {block,start,emptiness=true}?{string:Queryreqprotocol,ftype=querystringreqprotocol;,}" {block,end,emptiness=true} {string:reqprotocol,ftype=reqprotocol;,}" {number:Status,ftype=respstatus;,number:ResponseStatus,ftype=respstatus} {number:Bytes Sent,ftype=bytesent;,}{eoe}
...
Apache Tomcat Access Log Format Conversion Table both for AccessLogValve and for ExtendedAccessLogValve
logtyep logtype should be set to: tomcat, access
...
Format String | Description | XpoLog Pattern | XpoLog ftype | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Remote IP-address | {geoip:Client Remote IP,ftype=remoteip;type=;,} | remoteip |
| Local IP-address | ||||||||||||
%{c}a | Underlying peer IP address and port of the connection | {geoip:Remote IP,ftype= | localipremoteip} | localipremoteip | |||||||||||||
|
| Local IP-address | {ip:Local IP,ftype=localip} | localip | |||||||||||||
| Size of response in bytes, excluding HTTP headers. | {number:BytesSentBytes Sent,ftype=bytesent} | bytesent | ||||||||||||||
| Size of response in bytes, excluding HTTP headers. In CLF format, i.e. a ' | {textnumber:BytesSentBytes Sent,ftype=bytesent} | bytesent | ||||||||||||||
| The contents of cookie Foobar in the request sent to the server. Only version 0 cookies are fully supported. | {string:Cookie_< FOOBAR >} Replace < FOOBAR > with cookie name | |||||||||||||||
| The time taken to serve the request, in microseconds. | {number:ResponseTimeMilliSecsResponseTimeMicroSecs,ftype=processrequestmilliprocessrequestmicrosecs} processrequestmilli | processrequestmicrosecs | ||||||||||||||
| The contents of the environment variable FOOBAR | {string:EnvVariable_< FOOBAR >} Replace < FOOBAR > with variable name | |||||||||||||||
| Filename | {text:FileName}
| |||||||||||||||
| Remote host name (or IP address if | {text:Remotehost,ftype=remoteip}
| remoteip | ||||||||||||||
| The request protocol | {text:RequestProtocol,ftype=reqprotocol}
| reqprotocol | ||||||||||||||
| The contents of Foobar affect this. If you're interested in what the request header was prior to when most modules would have modified it, use mod_setenvif to copy the header into an internal environment variable and log that value with the | {text:<FOOBAR>} https://en.wikipedia.org/wiki/List_of_HTTP_header_fields and so on it goes for the different headers.
| |||||||||||||||
| The referer which is associated with the request | {string:RefererQuery,ftype=refererquery;,}{regexp:Referer,ftype=referer;refName=RefererQuery,^([\w-]+://[^?]+|/[^?]+)}
| referer | ||||||||||||||
| agentAgent | The User Agent which is associated with the request | { | stringtext:User | Agent-agent,ftype=useragent | ;,} | useragent | ||||||||||
%{ X-Forwarded-For}i | Method for identifying the originating IP address of a client connecting to a web server through an HTTP proxy or load balancer. | {iptext:X-Forwarded-For,ftype=forwardforip}
| forwardforip | ||||||||||||||
| Number of keepalive requests handled on this connection. Interesting if KeepAlive is being used, so that, for example, a '1' means the first keepalive request after the initial one, '2' the second, etc...; otherwise this is always 0 (indicating the initial request). Available in versions 2.2.11 and later. | {number:KeepAlive} | |||||||||||||||
| Remote logname (from identd, if supplied). This will return a dash unless mod_ident is present and IdentityCheck is set | {stringtext:logname,ftype=remotelog;,} | remotelog | ||||||||||||||
| The request method | {choice:Method,ftype=reqmethod;,GET;POST;HEAD} | reqmethod | ||||||||||||||
| The contents of note Foobar from another module. | {string:<FOOBAR>}
| |||||||||||||||
| The contents of Foobar | {string:<FOOBAR>}
| |||||||||||||||
| The canonical port of the server serving the request | {number:ServerPort,ftype=serverport} | serverport | ||||||||||||||
| The canonical port of the server serving the request or the server's actual port or the client's actual port. Valid formats are
| {number:ServerPort,ftype=serverport} {number:LocalServerPort,ftype=localserverport} {number:RemotePort,ftype=remoteport} | serverport localserverportt remoteport | ||||||||||||||
| The process ID of the child that serviced the request. | {text:ProcessID,ftype=processid} | processid | ||||||||||||||
| The process ID or thread id of the child that serviced the request. Valid formats are | {text:ProcessID,ftype=processid} Valid formats are | processid | ||||||||||||||
%{pid}P | {text:ProcessID,ftype=processid} | processid | |||||||||||||||
%{tid}P | {text:ThreadID,ftype=threadid} | threadid | |||||||||||||||
%{hextid}P | {text:HexThreadID,ftype=hexthreadid} | hexthreadid | |||||||||||||||
%q | The query string (prepended with a | {stringtext:QueryQueryString,ftype=querystring;,} OR Suggest a regexp that will build a list of parameters as columnscloumns. The query string (prepended with a | querystring | ||||||||||||||
| First line of request |
|
| string
| }
| reqmethod requrl querystring reqprotocol | |||||||||||
| The handler generating the response (if any). | {text:ResponseHandler}
| |||||||||||||||
| Status. For requests that got internally redirected, this is the status of the *original* request --- | {number:ResponseStatus,ftype=respstatus} . For requests that got internally redirected, this is the status of the *original* request --- %>s for the last. | respstatus | ||||||||||||||
%S | User Session ID | {text:UserSessionID,ftype=sessionid} | sessionid | ||||||||||||||
| Time the request was received (standard english format) | {date:Date,locale=en,dd/MMM/yyyy:HH:mm:ss z}
| |||||||||||||||
%{ format}t | The time | taken to serve the request, in seconds.{number:ResponseTimeSecs,ftype=processrequestsecs} | processrequestsecs | ||||||||||||||
| The time taken to serve the request, in a time unit given by same result as |
| processrequestmilli processrequestmicrosecs processrequestsecs | ||||||||||||||
%{ format}t | The time, in the form given by format, which should be in an extended the time is taken at the beginning of the request processing. If it starts with processing. In addition to the formats supported by |
|
| number of seconds since the Epoch |
| number of milliseconds since the Epoch |
| number of microseconds since the Epoch |
| millisecond fraction |
| microsecond fraction |
These tokens can not be combined with each other or strftime(3)
formatting in the same format string. You can use multiple %{
format}t
tokens instead.
The extended strftime(3)
tokens are available in 2.2.30 and later.
{date:Date,locale=en,dd/MMM/yyyy:HH:mm:ss z}
sec number of seconds since the Epoch
msec
number of milliseconds since the Epoch
usec
number of microseconds since the Epoch
msec_frac
millisecond fraction
usec_frac
microsecond fraction
These tokens can not be combined with each other or strftime(3)
formatting in the same format string. You can use multiple %{
format}t
tokens instead.
The extended strftime(3)
tokens are available in 2.2.30 and later.
{date:Date,locale=en,dd/MMM/yyyy:HH:mm:ss z}
sec number of seconds since the Epoch
msec number of milliseconds since the Epoch
usec number of microseconds since the Epoch
msec_frac millisecond fraction
usec_frac microsecond fraction
%u
%T
The time taken to serve the request, in seconds.
{number:ResponseTimeSecs,ftype=processrequestsecs}
%{
UNIT}T
The time taken to serve the request, in a time unit given by UNIT
. Valid units are ms
for milliseconds, us
for microseconds, and s
for seconds. Using s
gives the
same result as %T
without any format; using us
gives the same result as %D
. Combining %T
with a unit is available in 2.2.30 and later.
- {number:ResponseTimeMilliSecs,ftype=processrequestmilli}
- {number:ResponseTimeMicroSecs,ftype=processrequestmicrosecs}
- {number:ResponseTimeSecs,ftype=processrequestsecs}
processrequestmilli
processrequestmicrosecs
processrequestsecs
%u
Remote user that was authenticated (from auth; may be bogus if return status (%s
) is 401)
{string:Remote User,ftype=remoteuser;,}
Remote user (from auth; may be bogus if return status (%s
) is 401)
%U
The URL path requested, not including any query string.
{
text:
RequestURL,ftype=requrl
}
The URL path requested, not including any query string.
%v
The canonical ServerName of the server serving the request.
{text:ServerName,ftype=servername}
%V
The server name according to the UseCanonicalName setting.
{text:ServerName,ftype=servername}
The server name according to the UseCanonicalName setting.
%X
Connection status when response is completed:
| connection aborted before the response completed. |
| connection may be kept alive after the response is sent. |
| connection will be closed after the response is sent. |
(This directive was %c
in late versions of Apache 1.3, but this conflicted with the historical ssl %{
var}c
syntax.)
The ExtendedAccessLogValve conversion table below:
Format String | Description | XpoLog Pattern | XpoLog ftype | |||||||
---|---|---|---|---|---|---|---|---|---|---|
bytes | Bytes sent, excluding HTTP headers, or '-' if zero | {text:BytesSent,ftype=bytesent} | bytesent | |||||||
c-dns | Remote host name (or IP address if enableLookups for the connector is false) | {ip:RemoteIP,ftype=remoteip} | remoteip | |||||||
c-ip | Remote IP address | {ip:RemoteIP,ftype=remoteip} | remoteip | |||||||
cs-method | Request method (GET, POST, etc.) | {text:RequestMethod,ftype=reqmethod} | reqmethod | |||||||
cs-uri | Request URI | {text:FirstLine,ftype=reqfirstline} TBD - might be parsed to multiple value and types} | reqfirstline | |||||||
cs-uri-query | Query string (prepended with a '?' if it exists) | {text:QueryString,ftype=querystring} OR Suggest a regexp that will build a list of parameters as cloumns. The query string (prepended with a | querystring | |||||||
cs-uri-stem | Requested URL path | {text:RequestURL,ftype=requrl} The URL path requested, not including any query string. | requrl | |||||||
date | The date in yyyy-mm-dd format for GMT | {date:Date,locale=en,yyyy-MM-dd} TBD - time and date in sperate fileds. | ||||||||
s-dns | Local host name | {text:ServerName,ftype=servername} | servername | |||||||
s-ip | Local IP address | {ip:LocalIP,ftype=localip} | localip | |||||||
sc-status | HTTP status code of the response | {number:ResponseStatus,ftype=respstatus} . For requests that got internally redirected, this is the status of the *original* request --- %>s for the last. | respstatus | |||||||
time | Time the request was served in HH:mm:ss format for GMT | {date:Date,locale=en,HH:mm:ss} TBD - time and date in sperate fileds. | ||||||||
time-taken | Time (in seconds as floating point) taken to serve the request | {number:ResponseTimeSecs,,ftype=processrequestsec} | processrequestseci | |||||||
x-threadname | Current request thread name (can compare later with stacktraces) | {text:RequestThread,ftype=thread} | thread{text:ConnectionStatus} Connection status when response is completed:
(This directive was | |||||||
| Bytes received, including request and headers, cannot be zero. You need to enable mod_logio to use this. | {number:TotalBytesWHeadersReceived,ftype=reqbyteswheaders} (with headers) | reqbyteswheaders | |||||||
| Bytes sent, including headers, cannot be zero. You need to enable mod_logio to use this. | {number:TotalBytesWHeadersSent,ftype=respbyteswheaders} (with headers – can help compute header size) | respbyteswheaders | |||||||
| The contents of VARNAME | {text:Req_<VARNAME>} The content of VARNAME: trailer line(s) in the request sent to the server. | ||||||||
| The contents of VARNAME | {text:Resp_<VARNAME>} The contents of VARNAME | ||||||||
|