默认 tomcat 不记录访问日志,如下方法可以使tomcat记录访问日志。
这里通过Valve来设置,老版是通过Logger设置。Valve可以嵌套在Engine, Host或Context元素里,这就可以按层次设置日志了,如给每个WEB应用设置日志就可以在Context设置。
编辑 ${catalina}/conf/server.xml 文件。
注 :${catalina} 是 tomcat 的安装目录。
在需要的位置添加以下设置。
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
这个东西是日志文件放置的目录,在tomcat下面有个logs文件夹,那里面是专门放置日志文件的,当然你也可以修改。
这个是日志文件的名称前缀,我的日志名称为localhost_access_log.2007-09-22.txt,前面的前缀就是这个localhost_access_log。
这就是后缀名啦,可以改成别的。
通过pattern项的修改,可以改变日志输出的内容。
该项值可以为: common 与 combined ,这两个预先设置好的格式对应的日志输出内容如下:
common 的值: %h %l %u %t %r %s %b
combined 的值: %h %l %u %t %r %s %b %{Referer}i %{User-Agent}i
pattern 也可以根据需要自由组合 , 例如 pattern=”%h %l”
%a:这是记录访问者的IP
%A:这是记录本地服务器的IP
%b:这是发送信息的字节数,不涵括http头,如果字节数为0的话,显示为-
%B:没看出来与b%的区别
%h:这个就是服务器名称了,如果resolveHosts为false的话,这里就是IP地址了
%H:访问者使用的协议
%l: Remote logical username from identd
%m:访问的方式,是GET还是POST
%p:本地接收访问的端口
%q:比如你访问的是aaa.jsp?bbb=ccc,那么这里就显示?bbb=ccc,明白了吧,这个q是querystring的意思
%r: First line of the request (method and request URI)
%s:这个是http的状态
%S:用户的session ID,这个session ID大家可以另外查一下详细的解释,反正每次都会生成不同的session ID
%t:这就是时间,好像有一个Common Log Format可以改
%u:得到了验证的访问者,否则就是”-”
%U:访问的URL地址
%v:服务器名称,就是你url里面写的那个
%D:应该是访问发生的时间,以毫秒记
%T:应该是访问发生的时间,以秒记
如果这个值是true的话,tomcat会将这个服务器IP地址通过DNS转换为主机名,如果是false,就直接写服务器IP地址。
默认为true,默认的设置使得你的tomcat生成的文件命为prefix(前缀)+.+时间(一般是按天算)+.+ suffix(后缀),如localhost_access_log.2007-09-22.txt。
使用这个需要谨慎,因为你将其设置为false的话,tomcat会忽略时间,不会新生成文件,最后导致你的文件超级大,这样生成的文件名就是:localhost_access_log.txt
这个参数不太实用,可以设置任何值,比如咱们设置成condition=”tkq”,那么只有当ServletRequest.getAttribute (“tkq”)为空的时候,才会被记录下来
时间格式,但是这个时间格式是针对日志文件起作用的,还记得咱们生成的日志文件全名么:localhost_access_log.2007-09-22.txt,这里面的2007-09-22就是这么来的,如果你想让tomcat每小时生成一个日志文件,也很简单,将这个值设置为:fileDateFormat=” yyyy-MM-dd.HH”,当然也可以按分钟生成什么的,自己改改吧