public class AccessLogValve extends ValveBase implements AccessLog
Implementation of the Valve interface that generates a web server
 access log with the detailed line contents matching a configurable pattern.
 The syntax of the available patterns is similar to that supported by the
 Apache HTTP Server
 mod_log_config module.  As an additional feature,
 automatic rollover of log files when the date changes is also supported.
Patterns for the logged message may include constant text or any of the following replacement strings, for which the corresponding information from the specified Response is substituted:
enableLookups for the connector is false)
 In addition, the caller can specify one of the following aliases for commonly utilized patterns:
%h %l %u %t "%r" %s %b
 %h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"
 
 There is also support to write information from the cookie, incoming
 header, the Session or something else in the ServletRequest.
 It is modeled after the
 Apache HTTP Server log configuration
 syntax:
%{xxx}i for incoming headers
 %{xxx}o for outgoing response headers
 %{xxx}c for a specific cookie
 %{xxx}r xxx is an attribute in the ServletRequest
 %{xxx}s xxx is an attribute in the HttpSession
 %{xxx}t xxx is an enhanced SimpleDateFormat pattern
 (see Configuration Reference document for details on supported time patterns)
 
 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
 conditionUnless and conditionIf properties.
 If the value returned from ServletRequest.getAttribute(conditionUnless)
 yields a non-null value, the logging will be skipped.
 If the value returned from ServletRequest.getAttribute(conditionIf)
 yields the null value, the logging will be skipped.
 The condition attribute is synonym for
 conditionUnless and is provided for backwards compatibility.
 
For extended attributes coming from a getAttribute() call, it is you responsibility to ensure there are no newline or control characters.
| Modifier and Type | Class and Description | 
|---|---|
| protected static interface  | AccessLogValve.AccessLogElementAccessLogElement writes the partial message into the buffer. | 
| protected static class  | AccessLogValve.ByteSentElementwrite bytes sent, excluding HTTP headers - %b, %B | 
| protected static class  | AccessLogValve.CookieElementwrite a specific cookie - %{xxx}c | 
| protected class  | AccessLogValve.DateAndTimeElementwrite date and time, in configurable format (default CLF) - %t or %{format}t | 
| protected static class  | AccessLogValve.DateFormatCacheCache structure for formatted timestamps based on seconds. | 
| protected static class  | AccessLogValve.ElapsedTimeElementwrite time taken to process the request - %D, %T | 
| protected static class  | AccessLogValve.FirstByteTimeElementwrite time until first byte is written (commit time) in millis - %F | 
| protected static class  | AccessLogValve.HeaderElementwrite incoming headers - %{xxx}i | 
| protected class  | AccessLogValve.HostElementwrite remote host name - %h | 
| protected static class  | AccessLogValve.HttpStatusCodeElementwrite HTTP status code of the response - %s | 
| protected static class  | AccessLogValve.LocalAddrElementwrite local IP address - %A | 
| protected class  | AccessLogValve.LocalServerNameElementwrite local server name - %v | 
| protected static class  | AccessLogValve.LogicalUserNameElementwrite remote logical username from identd (always returns '-') - %l | 
| protected static class  | AccessLogValve.MethodElementwrite request method (GET, POST, etc.) - %m | 
| protected class  | AccessLogValve.PortElementwrite local or remote port for request connection - %p and %{xxx}p | 
| protected class  | AccessLogValve.ProtocolElementwrite request protocol - %H | 
| protected static class  | AccessLogValve.QueryElementwrite Query string (prepended with a '?' | 
| protected class  | AccessLogValve.RemoteAddrElementwrite remote IP address - %a | 
| protected static class  | AccessLogValve.RequestAttributeElementwrite an attribute in the ServletRequest - %{xxx}r | 
| protected static class  | AccessLogValve.RequestElementwrite first line of the request (method and request URI) - %r | 
| protected static class  | AccessLogValve.RequestURIElementwrite requested URL path - %U | 
| protected static class  | AccessLogValve.ResponseHeaderElementwrite a specific response header - %{xxx}o | 
| protected static class  | AccessLogValve.SessionAttributeElementwrite an attribute in the HttpSession - %{xxx}s | 
| protected static class  | AccessLogValve.SessionIdElementwrite user session ID - %S | 
| protected static class  | AccessLogValve.StringElementwrite any string | 
| protected static class  | AccessLogValve.ThreadNameElementwrite thread name - %I | 
| protected static class  | AccessLogValve.UserElementwrite remote user that was authenticated (if any), else '-' - %u | 
Lifecycle.SingleUse| Modifier and Type | Field and Description | 
|---|---|
| protected String | conditionAre we doing conditional logging. default null. | 
| protected String | conditionIfAre we doing conditional logging. default null. | 
| protected File | currentLogFileThe current log file we are writing to. | 
| protected boolean | enabledenabled this component | 
| protected String | encodingCharacter set used by the log file. | 
| protected String | fileDateFormatDate format to place in log file name. | 
| protected SimpleDateFormat | fileDateFormatterA date formatter to format a Date using the format
 given by  fileDateFormat. | 
| protected static String | infoThe descriptive information about this implementation. | 
| protected Locale | localeLocale used to format timestamps in log entries and in
 log file name suffix. | 
| protected String | localeNameName of locale used to format timestamps in log entries and in
 log file name suffix. | 
| protected AccessLogValve.AccessLogElement[] | logElementsArray of AccessLogElement, they will be used to make log message. | 
| protected String | patternThe pattern used to format our access log lines. | 
| protected String | prefixThe prefix that is added to log file filenames. | 
| protected boolean | renameOnRotateShould we defer inclusion of the date stamp in the file
 name until rotate time? | 
| protected boolean | requestAttributesEnabledShould this valve use request attributes for IP address, hostname,
 protocol and port used for the request. | 
| protected boolean | rotatableShould we rotate our log file? | 
| protected String | suffixThe suffix that is added to log file filenames. | 
| protected PrintWriter | writerThe PrintWriter to which we are currently logging, if any. | 
asyncSupported, container, containerLog, next, smmserverPROTOCOL_ATTRIBUTE, REMOTE_ADDR_ATTRIBUTE, REMOTE_HOST_ATTRIBUTE, SERVER_NAME_ATTRIBUTE, SERVER_PORT_ATTRIBUTEAFTER_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 and Description | 
|---|
| AccessLogValve() | 
| Modifier and Type | Method and Description | 
|---|---|
| void | backgroundProcess()Execute a periodic task, such as reloading, etc. | 
| protected AccessLogValve.AccessLogElement | createAccessLogElement(char pattern)create an AccessLogElement implementation | 
| protected AccessLogValve.AccessLogElement | createAccessLogElement(String name,
                      char pattern)create an AccessLogElement implementation which needs an element name | 
| protected AccessLogValve.AccessLogElement[] | createLogElements()parse pattern string and create the array of AccessLogElement | 
| protected static Locale | findLocale(String name,
          Locale fallback)Find a locale by name | 
| String | getCondition()Return whether the attribute name to look for when
 performing conditional logging. | 
| String | getConditionIf()Return whether the attribute name to look for when
 performing conditional logging. | 
| String | getConditionUnless()Return whether the attribute name to look for when
 performing conditional logging. | 
| String | getDirectory()Return the directory in which we create log files. | 
| boolean | getEnabled() | 
| String | getEncoding()Return the character set name that is used to write the log file. | 
| String | getFileDateFormat()Return the date format date based log rotation. | 
| String | getInfo()Return descriptive information about this implementation. | 
| String | getLocale()Return the locale used to format timestamps in log entries and in
 log file name suffix. | 
| int | getMaxDays() | 
| String | getPattern()Return the format pattern. | 
| String | getPrefix()Return the log file prefix. | 
| boolean | getRequestAttributesEnabled() | 
| String | getSuffix()Return the log file suffix. | 
| void | invoke(Request request,
      Response response)Log a message summarizing the specified request and response, according
 to the format specified by the  patternproperty. | 
| boolean | isBuffered()Is the logging buffered | 
| boolean | isCheckExists()Check for file existence before logging. | 
| boolean | isRenameOnRotate()Should we defer inclusion of the date stamp in the file
 name until rotate time | 
| boolean | isResolveHosts()Deprecated. 
 Unused, removed in Tomcat 8.
 See org.apache.catalina.connector.Connector.setEnableLookups(boolean). | 
| boolean | isRotatable()Should we rotate the access log. | 
| void | log(Request request,
   Response response,
   long time)Add the request/response to the access log using the specified processing
 time. | 
| void | log(String message)Log the specified message to the log file, switching files if the date
 has changed since the previous log call. | 
| protected void | open()Open the new log file for the date specified by  dateStamp. | 
| void | rotate()Rotate the log file if necessary. | 
| boolean | rotate(String newFileName)Rename the existing log file to something else. | 
| void | setBuffered(boolean buffered)Set the value if the logging should be buffered | 
| void | setCheckExists(boolean checkExists)Set whether to check for log file existence before logging. | 
| void | setCondition(String condition)Set the ServletRequest.attribute to look for to perform
 conditional logging. | 
| void | setConditionIf(String condition)Set the ServletRequest.attribute to look for to perform
 conditional logging. | 
| void | setConditionUnless(String condition)Set the ServletRequest.attribute to look for to perform
 conditional logging. | 
| void | setDirectory(String directory)Set the directory in which we create log files. | 
| void | setEnabled(boolean enabled) | 
| void | setEncoding(String encoding)Set the character set that is used to write the log file. | 
| void | setFileDateFormat(String fileDateFormat)Set the date format date based log rotation. | 
| void | setLocale(String localeName)Set the locale used to format timestamps in log entries and in
 log file name suffix. | 
| void | setMaxDays(int maxDays) | 
| void | setPattern(String pattern)Set the format pattern, first translating any recognized alias. | 
| void | setPrefix(String prefix)Set the log file prefix. | 
| void | setRenameOnRotate(boolean renameOnRotate)Set the value if we should defer inclusion of the date
 stamp in the file name until rotate time | 
| void | setRequestAttributesEnabled(boolean requestAttributesEnabled)Should this valve use request attributes for IP address, hostname,
 protocol and port used for the request? | 
| void | setResolveHosts(boolean resolveHosts)Deprecated. 
 Unused, removed in Tomcat 8.
 See org.apache.catalina.connector.Connector.setEnableLookups(boolean). | 
| void | setRotatable(boolean rotatable)Configure whether the access log should be rotated. | 
| void | setSuffix(String suffix)Set the log file suffix. | 
| protected void | startInternal()Start this component and implement the requirements
 of  LifecycleBase.startInternal(). | 
| protected void | stopInternal()Stop this component and implement the requirements
 of  LifecycleBase.stopInternal(). | 
event, getContainer, getDomainInternal, getNext, getObjectNameKeyProperties, initInternal, isAsyncSupported, setAsyncSupported, setContainer, setNext, toStringdestroyInternal, getDomain, getObjectName, postDeregister, postRegister, preDeregister, preRegister, register, setDomain, unregisteraddLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, getThrowOnFailure, init, removeLifecycleListener, setState, setState, setThrowOnFailure, start, stopprotected static final String info
protected boolean enabled
protected String pattern
protected volatile String prefix
protected boolean rotatable
protected boolean renameOnRotate
protected volatile String suffix
protected PrintWriter writer
protected SimpleDateFormat fileDateFormatter
fileDateFormat.protected File currentLogFile
protected String condition
conditionUnless property.protected String conditionIf
conditionIf property.protected String fileDateFormat
protected String localeName
protected Locale locale
protected volatile String encoding
null, the
 system default character set will be used. An empty string will be
 treated as null when this property is assigned.protected AccessLogValve.AccessLogElement[] logElements
protected boolean requestAttributesEnabled
false.setRequestAttributesEnabled(boolean)public int getMaxDays()
public void setMaxDays(int maxDays)
public boolean getEnabled()
public void setRequestAttributesEnabled(boolean requestAttributesEnabled)
false.setRequestAttributesEnabled in interface AccessLogrequestAttributesEnabled - true causes the attributes
                                  to be used, false causes
                                  the original values to be used.public boolean getRequestAttributesEnabled()
getRequestAttributesEnabled in interface AccessLogtrue if the attributes will be logged, otherwise
         falseAccessLog.setRequestAttributesEnabled(boolean)public void setEnabled(boolean enabled)
enabled - The enabled to set.public String getDirectory()
public void setDirectory(String directory)
directory - The new log file directorypublic String getInfo()
public String getPattern()
public void setPattern(String pattern)
pattern - The new patternpublic boolean isCheckExists()
public void setCheckExists(boolean checkExists)
checkExists - true meaning to check for file existence.public String getPrefix()
public void setPrefix(String prefix)
prefix - The new log file prefixpublic boolean isRotatable()
true if the access log should be rotatedpublic void setRotatable(boolean rotatable)
rotatable - true if the log should be rotatedpublic boolean isRenameOnRotate()
public void setRenameOnRotate(boolean renameOnRotate)
renameOnRotate - true if defer inclusion of date stamppublic boolean isBuffered()
public void setBuffered(boolean buffered)
buffered - true if buffered.public String getSuffix()
public void setSuffix(String suffix)
suffix - The new log file suffix@Deprecated public void setResolveHosts(boolean resolveHosts)
resolveHosts - The new resolve hosts value@Deprecated public boolean isResolveHosts()
public String getCondition()
public void setCondition(String condition)
condition - Set to null to log everythingpublic String getConditionUnless()
public void setConditionUnless(String condition)
condition - Set to null to log everythingpublic String getConditionIf()
public void setConditionIf(String condition)
condition - Set to null to log everythingpublic String getFileDateFormat()
public void setFileDateFormat(String fileDateFormat)
public String getLocale()
public void setLocale(String localeName)
localeName - The locale to use.public String getEncoding()
null if the system default
  character set is used.public void setEncoding(String encoding)
encoding - The name of the character set.public void backgroundProcess()
backgroundProcess in interface ValvebackgroundProcess in class ValveBasepublic void invoke(Request request, Response response) throws IOException, ServletException
pattern property.invoke in interface Valveinvoke in class ValveBaserequest - Request being processedresponse - Response being processedIOException - if an input/output error has occurredServletException - if a servlet error has occurredpublic void log(Request request, Response response, long time)
AccessLogpublic void rotate()
public boolean rotate(String newFileName)
newFileName - The file name to move the log file entry topublic void log(String message)
message - Message to be loggedprotected void open()
dateStamp.protected void startInternal()
                      throws LifecycleException
LifecycleBase.startInternal().startInternal in class ValveBaseLifecycleException - if this component detects a fatal error
  that prevents this component from being usedprotected void stopInternal()
                     throws LifecycleException
LifecycleBase.stopInternal().stopInternal in class ValveBaseLifecycleException - if this component detects a fatal error
  that prevents this component from being usedprotected AccessLogValve.AccessLogElement[] createLogElements()
protected AccessLogValve.AccessLogElement createAccessLogElement(String name, char pattern)
protected AccessLogValve.AccessLogElement createAccessLogElement(char pattern)
Copyright © 2000-2020 Apache Software Foundation. All Rights Reserved.