|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.web.filter.GenericFilterBean org.springframework.web.filter.OncePerRequestFilter org.springframework.web.filter.AbstractRequestLoggingFilter
public abstract class AbstractRequestLoggingFilter
Base class for Filter
s that perform logging operations before and after a request is processed.
Subclasses should override the beforeRequest(HttpServletRequest, String)
and
afterRequest(HttpServletRequest, String)
methods to perform the actual logging around the request.
Subclasses are passed the message to write to the log in the beforeRequest
and
afterRequest
methods. By default, only the URI of the request is logged. However, setting the
includeQueryString
property to true
will cause the query string of the request to be
included also. The payload (body) of the request can be logged via the includePayload
flag. Note that
this will only log that which is read, which might not be the entire payload.
Prefixes and suffixes for the before and after messages can be configured using the
beforeMessagePrefix
, afterMessagePrefix
, beforeMessageSuffix
and
afterMessageSuffix
properties,
beforeRequest(javax.servlet.http.HttpServletRequest, java.lang.String)
,
afterRequest(javax.servlet.http.HttpServletRequest, java.lang.String)
Field Summary | |
---|---|
static String |
DEFAULT_AFTER_MESSAGE_PREFIX
|
static String |
DEFAULT_AFTER_MESSAGE_SUFFIX
|
static String |
DEFAULT_BEFORE_MESSAGE_PREFIX
|
static String |
DEFAULT_BEFORE_MESSAGE_SUFFIX
|
Fields inherited from class org.springframework.web.filter.OncePerRequestFilter |
---|
ALREADY_FILTERED_SUFFIX |
Fields inherited from class org.springframework.web.filter.GenericFilterBean |
---|
logger |
Constructor Summary | |
---|---|
AbstractRequestLoggingFilter()
|
Method Summary | |
---|---|
protected abstract void |
afterRequest(HttpServletRequest request,
String message)
Concrete subclasses should implement this method to write a log message after the request is processed. |
protected abstract void |
beforeRequest(HttpServletRequest request,
String message)
Concrete subclasses should implement this method to write a log message before the request is processed. |
protected String |
createMessage(HttpServletRequest request,
String prefix,
String suffix)
Create a log message for the given request, prefix and suffix. |
protected void |
doFilterInternal(HttpServletRequest request,
HttpServletResponse response,
FilterChain filterChain)
Forwards the request to the next filter in the chain and delegates down to the subclasses to perform the actual request logging both before and after the request is processed. |
protected int |
getMaxPayloadLength()
Return the maximum length of the payload body to be included in the log message. |
protected boolean |
isIncludeClientInfo()
Return whether or not the client address and session id should be included in the log message. |
protected boolean |
isIncludePayload()
Return whether or not the request payload (body) should be included in the log message. |
protected boolean |
isIncludeQueryString()
Return whether or not the query string should be included in the log message. |
void |
setAfterMessagePrefix(String afterMessagePrefix)
Set the value that should be prepended to the log message written after a request is processed. |
void |
setAfterMessageSuffix(String afterMessageSuffix)
Set the value that should be appended to the log message written after a request is processed. |
void |
setBeforeMessagePrefix(String beforeMessagePrefix)
Set the value that should be prepended to the log message written before a request is processed. |
void |
setBeforeMessageSuffix(String beforeMessageSuffix)
Set the value that should be apppended to the log message written before a request is processed. |
void |
setIncludeClientInfo(boolean includeClientInfo)
Set whether or not the client address and session id should be included in the log message. |
void |
setIncludePayload(boolean includePayload)
Set whether or not the request payload (body) should be included in the log message. |
void |
setIncludeQueryString(boolean includeQueryString)
Set whether or not the query string should be included in the log message. |
void |
setMaxPayloadLength(int maxPayloadLength)
Sets the maximum length of the payload body to be included in the log message. |
Methods inherited from class org.springframework.web.filter.OncePerRequestFilter |
---|
doFilter, getAlreadyFilteredAttributeName, shouldNotFilter |
Methods inherited from class org.springframework.web.filter.GenericFilterBean |
---|
addRequiredProperty, afterPropertiesSet, destroy, getFilterConfig, getFilterName, getServletContext, init, initBeanWrapper, initFilterBean, setBeanName, setEnvironment, setServletContext |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final String DEFAULT_BEFORE_MESSAGE_PREFIX
public static final String DEFAULT_BEFORE_MESSAGE_SUFFIX
public static final String DEFAULT_AFTER_MESSAGE_PREFIX
public static final String DEFAULT_AFTER_MESSAGE_SUFFIX
Constructor Detail |
---|
public AbstractRequestLoggingFilter()
Method Detail |
---|
public void setIncludeQueryString(boolean includeQueryString)
Should be configured using an
<init-param>
for parameter name "includeQueryString" in the filter definition in
web.xml
.
protected boolean isIncludeQueryString()
public void setIncludeClientInfo(boolean includeClientInfo)
Should be configured
using an <init-param>
for parameter name "includeClientInfo" in the filter definition in
web.xml
.
protected boolean isIncludeClientInfo()
public void setIncludePayload(boolean includePayload)
Should be configured using
an <init-param>
for parameter name "includePayload" in the filter definition in
web.xml
.
protected boolean isIncludePayload()
public void setMaxPayloadLength(int maxPayloadLength)
protected int getMaxPayloadLength()
public void setBeforeMessagePrefix(String beforeMessagePrefix)
public void setBeforeMessageSuffix(String beforeMessageSuffix)
public void setAfterMessagePrefix(String afterMessagePrefix)
public void setAfterMessageSuffix(String afterMessageSuffix)
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException
doFilterInternal
in class OncePerRequestFilter
ServletException
IOException
beforeRequest(javax.servlet.http.HttpServletRequest, java.lang.String)
,
afterRequest(javax.servlet.http.HttpServletRequest, java.lang.String)
protected String createMessage(HttpServletRequest request, String prefix, String suffix)
If includeQueryString
is
true
then the inner part of the log message will take the form request_uri?query_string
otherwise the message will simply be of the form request_uri
.
The final message is composed of the inner part as described and the supplied prefix and suffix.
protected abstract void beforeRequest(HttpServletRequest request, String message)
request
- current HTTP requestmessage
- the message to logprotected abstract void afterRequest(HttpServletRequest request, String message)
request
- current HTTP requestmessage
- the message to log
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |