Class ApacheLogFormat

  • All Implemented Interfaces:
    AccessLogFormat

    public class ApacheLogFormat
    extends Object
    implements AccessLogFormat
    An AccessLogFormat using a standard vaguely similar and heavily influenced by Apache's own custom access log formats.

    As with Apache, the format string specified at construction should be composed of these tokens:

    %% The literal percent sign (can also be escaped with back-slash, like "\%"
    %a Remote IP-address
    %A Local IP-address
    %b Size of response in bytes, excluding HTTP headers, using "-" (a dash character) rather than a "0" (zero) when no bytes are sent
    %B Size of response in bytes, excluding HTTP headers
    %{Foobar}C The contents of cookie "Foobar" in the request sent to the server
    %D The time taken to serve the request, in microseconds
    %h Remote host name
    %{local|remote}h Host name, either "local" or "remote"
    %H The request protocol
    %{Foobar}i The contents of the "Foobar: ..." header in the request
    %m The request method
    %{Foobar}o The contents of the "Foobar: ..." header in the response
    %p Local port number
    %{local|remote}p The port number, either "local" or "remote"
    %q The query string, prepended with a "?" (question mark) if a query string exists, otherwise an empty string
    %r First line of request, an alias to "%m %U%q %H"
    %s Status code
    %t The time the request was received, in standard English format (like "[09/Feb/2014:12:00:34 +0900]")
    %{[format][@timezone]}t The time the request was received. Both format and timezone are optional
    • When "format" is left unspecified, the default %t format [yyyy/MMM/dd:HH:mm:ss Z] is used
    • When "format" is specified, the given pattern must be a valid SimpleDateFormat pattern.
    • When "@timezone" is left unspecified, the default time zone is used.
    • When "@timezone" is specified, the time zone will be looked up by time zone identifier (note that this will default to GMT if the specified identifier was not recognized).
    When the "@" character needs to be used in the format, it must be escaped as "@@"
    %T The time taken to serve the request, in seconds
    %{...}T The time taken to serve the request. The parameter can be a time unit like:
    • "n", "nano[s]", "nanosec[s]", "nanosecond[s]"
    • "micro[s]", "microsec[s]", "microsecond[s]"
    • "m", "milli[s]", "millisec[s]", "millisecond[s]"
    • "s", "sec[s]", "second[s]"
    %u The remote user name
    %U The URL path requested, not including any query string
    %v The name of the server which served the request
    Author:
    Pier Fumagalli, USRZ.com
    • Constructor Detail

      • ApacheLogFormat

        public ApacheLogFormat​(String format)
        Create a new ApacheLogFormat instance by parsing the format from the specified String.
    • Method Detail

      • format

        public String format​(Response response,
                             Date timeStamp,
                             long responseNanos)
        Description copied from interface: AccessLogFormat
        Format the data contained in the specified Response and return a String which can be appended to an access log file.
        Specified by:
        format in interface AccessLogFormat
        Parameters:
        response - The Response holding the data to format.
        timeStamp - The Date at which the request was originated.
        responseNanos - The time, in nanoseconds, the Response took to complete.
      • getFormat

        public String getFormat()
        Return the normalized format associated with this instance.