Class LogHandler

  • All Implemented Interfaces:
    Handler

    public class LogHandler
    extends java.lang.Object
    implements Handler
    Handler for logging information about requests. Wraps another handler, and logs information about each HTTP request to a file.

    Request properties:

    handler
    The name of the handler to wrap. This can either be the token for the class, or the class name itself.
    logFile
    The name of the file to log the output to. If the file already exists, data is appended to it. If the file is removed, a new one is created. If no name is specified, one is invented that contains the name and port of the server. Unless an absolute path is specified, the log file is placed in the current directory.
    flush
    The number of lines of logging output that may be buffered in memory before being written out to the log file. default to 25.
    format
    The format of the output string. Embedded strings of the form "%X" are replaced, based on the following values for "X":
    • %
      A single "%"
    • b
      Bytes written to the client for this request.
    • d
      Time to service this request (ms).
    • i
      Client ip address.
    • m
      Request method (GET, POST, etc)
    • M
      Memory utilization (%).
    • q
      query string (if any)
    • r
      Requests used for this connection.
    • s
      HTTP result code.
    • t
      TimeStamp (ms since epoch).
    • T
      Number of active threads.
    • u
      URL for this request.
    • v
      HTTP protocol version (10 or 11).
    Defaults to "%u;%t:%d:%b".
    props
    If specified This string is tacked onto the end of the "format" string. Entries in the Request Properties may be included using ${...} substitutions.
    headers
    If specified This string is tacked onto the end of the "props" string. Entries in the HTTPrequest headers may be included using ${...} substitutions.
    title
    if present, this is output as the first line of the file

    See the ChainSawHandler for generating standard format log files.

    Version:
    Author:
    Stephen Uhler
    • Constructor Summary

      Constructors 
      Constructor Description
      LogHandler()  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean init​(Server server, java.lang.String prefix)
      Initializes the handler.
      boolean respond​(Request request)
      Dispatch the request to the handler.
      static java.lang.String subst​(Request request, java.lang.String format, long duration)
      Format a string.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • props

        public java.lang.String props
      • headers

        public java.lang.String headers
      • format

        public java.lang.String format
      • title

        public java.lang.String title
      • flush

        public int flush
      • file

        public java.io.File file
    • Constructor Detail

      • LogHandler

        public LogHandler()
    • Method Detail

      • init

        public boolean init​(Server server,
                            java.lang.String prefix)
        Description copied from interface: Handler
        Initializes the handler.
        Specified by:
        init in interface Handler
        Parameters:
        server - The HTTP server that created this Handler. Typical Handlers will use Server.props to obtain run-time configuration information.
        prefix - The handlers name. The string this Handler may prepend to all of the keys that it uses to extract configuration information from Server.props. This is set (by the Server and ChainHandler) to help avoid configuration parameter namespace collisions.
        Returns:
        true if this Handler initialized successfully, false otherwise. If false is returned, this Handler should not be used.
      • respond

        public boolean respond​(Request request)
                        throws java.io.IOException
        Dispatch the request to the handler. Log information if dispatched handler returns true.
        Specified by:
        respond in interface Handler
        Parameters:
        request - The Request object that represents the HTTP request.
        Returns:
        true if the request was handled. A request was handled if a response was supplied to the client, typically by calling Request.sendResponse() or Request.sendError.
        Throws:
        java.io.IOException - if there was an I/O error while sending the response to the client. Typically, in that case, the Server will (try to) send an error message to the client and then close the client's connection.

        The IOException should not be used to silently ignore problems such as being unable to access some server-side resource (for example getting a FileNotFoundException due to not being able to open a file). In that case, the Handler's duty is to turn that IOException into a HTTP response indicating, in this case, that a file could not be found.

      • subst

        public static java.lang.String subst​(Request request,
                                             java.lang.String format,
                                             long duration)
        Format a string. Replace %X constructs.