Package sunlabs.brazil.handler
Class LogHandler
java.lang.Object
sunlabs.brazil.handler.LogHandler
- All Implemented Interfaces:
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).
- %
- 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
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
-
Field Details
-
handler
-
props
-
headers
-
format
-
title
-
flush
public int flush -
file
-
-
Constructor Details
-
LogHandler
public LogHandler()
-
-
Method Details
-
init
Description copied from interface:Handler
Initializes the handler.- Specified by:
init
in interfaceHandler
- Parameters:
server
- The HTTP server that created thisHandler
. TypicalHandler
s will useServer.props
to obtain run-time configuration information.prefix
- The handlers name. The string thisHandler
may prepend to all of the keys that it uses to extract configuration information fromServer.props
. This is set (by theServer
andChainHandler
) to help avoid configuration parameter namespace collisions.- Returns:
true
if thisHandler
initialized successfully,false
otherwise. Iffalse
is returned, thisHandler
should not be used.
-
respond
Dispatch the request to the handler. Log information if dispatched handler returns true.- Specified by:
respond
in interfaceHandler
- Parameters:
request
- TheRequest
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 callingRequest.sendResponse()
orRequest.sendError
.- Throws:
IOException
- if there was an I/O error while sending the response to the client. Typically, in that case, theServer
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 aFileNotFoundException
due to not being able to open a file). In that case, theHandler
's duty is to turn thatIOException
into a HTTP response indicating, in this case, that a file could not be found.
-
subst
Format a string. Replace %X constructs.
-