Class ExtendedAccessLogValve
- All Implemented Interfaces:
MBeanRegistration
,AccessLog
,Contained
,JmxEnabled
,Lifecycle
,Valve
c-dns
: Client hostname (or ip address ifenableLookups
for the connector is false)c-ip
: Client ip addressbytes
: bytes servedcs-method
: request methodcs-uri
: The full uri requestedcs-uri-query
: The query stringcs-uri-stem
: The uri without query stringdate
: The date in yyyy-mm-dd format for GMTs-dns
: The server dns entrys-ip
: The server ip addresscs(xxx)
: The value of header xxx from client to serversc(xxx)
: The value of header xxx from server to clientsc-status
: The status codetime
: Time the request was servedtime-taken
: Time (in seconds) taken to serve the requestx-threadname
: Current request thread name (can compare later with stacktraces)x-A(xxx)
: Pull xxx attribute from the servlet contextx-C(xxx)
: Pull the cookie(s) of the name xxxx-O(xxx)
: Pull the all response header values xxxx-R(xxx)
: Pull xxx attribute from the servlet requestx-S(xxx)
: Pull xxx attribute from the sessionx-P(...)
: Call request.getParameter(...) and URLencode it. Helpful to capture certain POST parameters.- For any of the x-H(...) the following method will be called from the HttpServletRequest object
x-H(authType)
: getAuthTypex-H(characterEncoding)
: getCharacterEncodingx-H(contentLength)
: getContentLengthx-H(locale)
: getLocalex-H(protocol)
: getProtocolx-H(remoteUser)
: getRemoteUserx-H(requestedSessionId)
: getRequestedSessionIdx-H(requestedSessionIdFromCookie)
: isRequestedSessionIdFromCookiex-H(requestedSessionIdValid)
: isRequestedSessionIdValidx-H(scheme)
: getSchemex-H(secure)
: isSecure
Log rotation can be on or off. This is dictated by the rotatable
property.
For UNIX users, another field called checkExists
is also available. If set to true, the log file's
existence will be checked before each logging. This way an external log rotator can move the file somewhere and
Tomcat will start with a new file.
For JMX junkies, a public method called rotate
has been made available to allow you to tell this
instance to move the existing log file to somewhere else and start writing a new log file.
Conditional logging is also supported. This can be done with the condition
property. If the value
returned from ServletRequest.getAttribute(condition) yields a non-null value, the logging will be skipped.
For extended attributes coming from a getAttribute() call, it is you responsibility to ensure there are no newline or control characters.
- Author:
- Peter Rossbach
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected static class
protected static class
protected static class
protected static class
protected static class
protected static class
protected static class
write a specific response header - x-O(xxx)protected static class
protected static class
protected static class
protected static class
Nested classes/interfaces inherited from class org.apache.catalina.valves.AbstractAccessLogValve
AbstractAccessLogValve.AccessLogElement, AbstractAccessLogValve.ByteSentElement, AbstractAccessLogValve.CachedElement, AbstractAccessLogValve.ConnectionStatusElement, AbstractAccessLogValve.DateAndTimeElement, AbstractAccessLogValve.DateFormatCache, AbstractAccessLogValve.ElapsedTimeElement, AbstractAccessLogValve.FirstByteTimeElement, AbstractAccessLogValve.HeaderElement, AbstractAccessLogValve.HostElement, AbstractAccessLogValve.HttpStatusCodeElement, AbstractAccessLogValve.LocalAddrElement, AbstractAccessLogValve.LocalServerNameElement, AbstractAccessLogValve.LogicalUserNameElement, AbstractAccessLogValve.MethodElement, AbstractAccessLogValve.PortElement, AbstractAccessLogValve.ProtocolElement, AbstractAccessLogValve.QueryElement, AbstractAccessLogValve.RemoteAddrElement, AbstractAccessLogValve.RequestElement, AbstractAccessLogValve.RequestURIElement, AbstractAccessLogValve.SessionIdElement, AbstractAccessLogValve.StringElement, AbstractAccessLogValve.ThreadNameElement, AbstractAccessLogValve.UserElement
Nested classes/interfaces inherited from interface org.apache.catalina.Lifecycle
Lifecycle.SingleUse
-
Field Summary
Fields inherited from class org.apache.catalina.valves.AccessLogValve
currentLogFile, encoding, fileDateFormat, fileDateFormatter, prefix, renameOnRotate, rotatable, suffix, writer
Fields inherited from class org.apache.catalina.valves.AbstractAccessLogValve
cachedElements, condition, conditionIf, enabled, locale, localeName, logElements, pattern, requestAttributesEnabled
Fields inherited from class org.apache.catalina.valves.ValveBase
asyncSupported, container, containerLog, next, sm
Fields inherited from class org.apache.catalina.util.LifecycleMBeanBase
mserver
Fields inherited from interface org.apache.catalina.AccessLog
PROTOCOL_ATTRIBUTE, REMOTE_ADDR_ATTRIBUTE, REMOTE_HOST_ATTRIBUTE, SERVER_NAME_ATTRIBUTE, SERVER_PORT_ATTRIBUTE
Fields inherited from interface org.apache.catalina.Lifecycle
AFTER_DESTROY_EVENT, AFTER_INIT_EVENT, AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_DESTROY_EVENT, BEFORE_INIT_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, CONFIGURE_START_EVENT, CONFIGURE_STOP_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected AbstractAccessLogValve.AccessLogElement[]
Parse pattern string and create the array of AccessLogElement.protected AbstractAccessLogValve.AccessLogElement
protected AbstractAccessLogValve.AccessLogElement
getLogElement
(String token, ExtendedAccessLogValve.PatternTokenizer tokenizer) protected AbstractAccessLogValve.AccessLogElement
protected AbstractAccessLogValve.AccessLogElement
protected AbstractAccessLogValve.AccessLogElement
getServletRequestElement
(String parameter) protected AbstractAccessLogValve.AccessLogElement
protected void
open()
Open the new log file for the date specified bydateStamp
.Methods inherited from class org.apache.catalina.valves.AccessLogValve
backgroundProcess, getDirectory, getEncoding, getFileDateFormat, getMaxDays, getPrefix, getSuffix, isBuffered, isCheckExists, isRenameOnRotate, isRotatable, log, rotate, rotate, setBuffered, setCheckExists, setDirectory, setEncoding, setFileDateFormat, setMaxDays, setPrefix, setRenameOnRotate, setRotatable, setSuffix, startInternal, stopInternal
Methods inherited from class org.apache.catalina.valves.AbstractAccessLogValve
createAccessLogElement, createAccessLogElement, escapeAndAppend, findLocale, getCondition, getConditionIf, getConditionUnless, getEnabled, getIpv6Canonical, getLocale, getMaxLogMessageBufferSize, getPattern, getRequestAttributesEnabled, invoke, log, setCondition, setConditionIf, setConditionUnless, setEnabled, setIpv6Canonical, setLocale, setMaxLogMessageBufferSize, setPattern, setRequestAttributesEnabled
Methods inherited from class org.apache.catalina.valves.ValveBase
getContainer, getDomainInternal, getNext, getObjectNameKeyProperties, initInternal, isAsyncSupported, setAsyncSupported, setContainer, setNext, toString
Methods inherited from class org.apache.catalina.util.LifecycleMBeanBase
destroyInternal, getDomain, getObjectName, postDeregister, postRegister, preDeregister, preRegister, register, setDomain, unregister, unregister
Methods inherited from class org.apache.catalina.util.LifecycleBase
addLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, getThrowOnFailure, init, removeLifecycleListener, setState, setState, setThrowOnFailure, start, stop
-
Constructor Details
-
ExtendedAccessLogValve
public ExtendedAccessLogValve()
-
-
Method Details
-
open
protected void open()Description copied from class:AccessLogValve
Open the new log file for the date specified bydateStamp
.- Overrides:
open
in classAccessLogValve
-
createLogElements
Description copied from class:AbstractAccessLogValve
Parse pattern string and create the array of AccessLogElement.- Overrides:
createLogElements
in classAbstractAccessLogValve
- Returns:
- the log elements array
-
getLogElement
protected AbstractAccessLogValve.AccessLogElement getLogElement(String token, ExtendedAccessLogValve.PatternTokenizer tokenizer) throws IOException - Throws:
IOException
-
getClientToServerElement
protected AbstractAccessLogValve.AccessLogElement getClientToServerElement(ExtendedAccessLogValve.PatternTokenizer tokenizer) throws IOException - Throws:
IOException
-
getServerToClientElement
protected AbstractAccessLogValve.AccessLogElement getServerToClientElement(ExtendedAccessLogValve.PatternTokenizer tokenizer) throws IOException - Throws:
IOException
-
getProxyElement
protected AbstractAccessLogValve.AccessLogElement getProxyElement(ExtendedAccessLogValve.PatternTokenizer tokenizer) throws IOException - Throws:
IOException
-
getXParameterElement
protected AbstractAccessLogValve.AccessLogElement getXParameterElement(ExtendedAccessLogValve.PatternTokenizer tokenizer) throws IOException - Throws:
IOException
-
getServletRequestElement
-