<< 了解CMS(Concurrent Mark-Sweep)垃圾回收器 - Java,JVM,CMS,垃圾回收,jc - Java - ITeye论坛 | 首页 | 浏览器缓存机制 - 吴秦 - 博客园 >>

Tomcat Access Log配置 - xiaobaoqiu Blog

1.配置的位置

项目conf目录下的server.xml文件,其中的AccessLogValve这个Valve的配置,比如下面这个配置:

1
2
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="access." suffix=".log"          pattern="%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i" %{X-Forwarded-For}i "%Dms"" resolveHosts="false"/>

2.参数详解

Tomcat AccessLogValve支持写列配置参数:

2.1 className

执行Access Log任务的类,默认是org.apache.catalina.valves.AccessLogValve;也可以使用org.apache.catalina.valves.FastCommonAccessLogValve,但这时候只支持common和combined patterns。

2.2 directory

AccessLogValve产生的Access Log文件存放目录的绝对路径或者相对路径。如果是相对路径,那么是相对$CATALINA_HOME的。如果没有指定这个参数,默认值是"logs"(相对$CATALINA_HOME)。

2.3 pattern

用于指定展示在Access Log中的各种request和response的信息字段的格式,也可以使用单词common或者combined来选择一种标准的日志形式。下一节会详细介绍。

注意优化的access只支持common和combined格式。

2.4 prefix

每个Access Log文件的文件名前缀,如果没有指定,默认是"access_log.“,如果想没有前缀,则指定一个空的字符串(zero-length string)。

2.5 resolveHosts

如果设置为true,则会通过DNS lookup将远程主机的IP地址转换成对应的主机。设置成false则跳过这个DNS lookup过程,然后在日志中直接展示IP地址。

2.6 suffix

每个Access Log文件的文件名后缀,如果没有指定,默认值是“”,如果想没有后缀,则指定一个空的字符串(zero-length string)。

2.7 rotatable

默认为true。这个参数决定是否需要切换切换日志文件,如果被设置为false,则日志文件不会切换,即所有文件打到同一个日志文件中,并且fileDateFormat参数也会被忽略。小心使用这个参数。

2.8 condition

设置是否打开条件日志,如果设置了这个参数,requests只有当ServletRequest.getAttribute()为null的时候才会被记录日志。比如这个值被设置成junk,然后当一个特定请求的ServletRequest.getAttribute(“junk”) == null的时候,这个request会被记录。使用Filters很容易在ServletRequest中设置或者不设置这个属性。

2.9 fileDateFormat

Tomcat允许指定Access Log文件名中日期格式。日期格式同时也决定了如何切换日志文件的策略,比如如果你想每小时生成一个日志文件,设置这个值为yyyy-MM-dd.HH。

3.pattern参数

pattern属性有一系列的字符串参数组成,每个参数都有前缀"%“,目前支持下面这些参数:

%a - 远程IP地址 %A - 本地IP地址 %b - 发送的字节数(Bytes sent), 不包括HTTP headers的字节,如果为0则展示'-' %B - 发送的字节数(Bytes sent), 不包括HTTP headers的字节 %h - 远程主机名称(如果resolveHosts为false则展示IP) %H - 请求协议 %l - 远程用户名,始终为'-'(Remote logical username from identd) %m - 请求的方法(GET, POST等) %p - 接受请求的本地端口 %q - 查询字符串,如果存在,有一个前置的'?' %r - 请求的第一行(包括请求方法和请求的URI) %s - response的HTTP状态码(200,404等) %S - 用户的session ID %t - 日期和时间,Common Log Format格式 %u - 被认证的远程用户, 不存在则展示'-' %U - 请求URL路径 %v - 本地服务名 %D - 处理请求的时间,单位为毫秒 %T - 处理请求的时间,单位为秒 %I - 当前请求的线程名(can compare later with stacktraces) 

另外,Access Log中也支持cookie,请求header,响应headers,Session或者其他在ServletRequest中的对象的信息。格式遵循apache语法:

%{xxx}i 请求headers的信息 %{xxx}o 响应headers的信息 %{xxx}c 请求cookie的信息 %{xxx}r xxx是ServletRequest的一个属性 %{xxx}s xxx是HttpSession的一个属性 

common模式的pattern(即默认pattern参数)的格式为'%h %l %u %t “%r” %s %b'。

combined模式的pattern可以增加Referer和User-Agent headers的参数形式,每个参数用双引号包起来,引号中的内容还是上面列举的参数。比如"%{User-Agent}i"使其为”%{User-Agent}i“,即请求的User-Agent(客户端,浏览器)。

阅读全文……

标签 : , ,



发表评论 发送引用通报