If you want to analyze your
application's usage activities such as who is accessing your page,
number of hits, errors ect, you can use the HTTP access log files
monitor and analyze the above measures. WSO2 products uses embedded
tomcat as it's primary runtime therefore, you can use apache tomcat
access logger to monitor your activity and performance of the server
as well as any errors that may be occurring. This post explain how
you can configure HTTP access logging in WSO2 products in order to
get efficient monitoring.
In WSO2 products you can customize the
http access log configuration by editing the catalina-server.xml
which is located {CARBON_HOME}/repository/conf/tomcat directory,
which is the server descripter file for the embedded tomcat
integration. In the catalina-server.xml, under valves you have the HTTP access log configuration as shown below
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="${carbon.home}/repository/logs"
prefix="http_access_" suffix=".log"
pattern="combined" />
The server access log records all
requests processed by the server. You can modify the what to log and
what not to log by customizing the pattern attribute.
In the pattern attribute we can define
formatting layouts. A formatting layout identifying the various
information fields from the request and response to be logged, or the
word "common" or "combined" to select a standard
format.
Values for the pattern attribute are
made up of literal text strings, combined with pattern identifiers
prefixed by the "%" character to cause replacement by the
corresponding variable value from the current request and response.
The following pattern codes are supported:
%a - Remote IP address
%A - Local IP address
%b - Bytes sent, excluding HTTP headers, or '-' if no bytes were sent
%B - Bytes sent, excluding HTTP headers
%h - Remote host name
%H - Request protocol
%l - Remote logical username from identd (always returns '-')
%m - Request method
%p - Local port
%q - Query string (prepended with a '?' if it exists, otherwise an empty string
%r - First line of the request
%s - HTTP status code of the response
%S - User session ID
%t - Date and time, in Common Log Format format
%u - Remote user that was authenticated
%U - Requested URL path
%v - Local server name
%D - Time taken to process the request, in millis
%T - Time taken to process the request, in seconds
%I - current request thread name (can compare later with stacktraces)
In addition, the caller can specify one
of the following aliases for commonly utilized patterns:
common - %h %l %u %t "%r"
%s %b
combined - %h %l %u %t "%r"
%s %b "%{Referer}i" "%{User-Agent}i"
Please note that the optimized access
does only support common and combined as the value for this
attribute.
If you want to change the format you
can modify the as shown below
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="${carbon.home}/repository/logs"
prefix="http_access_" suffix=".log"
pattern="%h %l %u %t '%r' %s %b" />
You can further change the log file
location by changing the directory, prefix is the name of the log
file. By default logs are rotated daily and the date is appended to
the log file name. However, you can disable the log rotation by
adding the following attribute rotatable="false". If you
want to not have the current date appended in the log file name
however, need the date to the rotated log file you can add
renameOnRotate="true" attribute the the valve
configuration. Please refer Access Log Valve Attributes for the full
list of supported attributes.
I modified the pattern field, but the change is not getting picked up by tomcat and it still logs with the default format. Any idea for wso2 api manager 1.10 ?
ReplyDeleteThanks for sharing useful information. how can we automatically delete wso2 logs after certain period regardless of file size ? Kindly me know possible solution
ReplyDelete