本文是基于Tomcat 7.0.55版本来配置打印Access Log。
修改server.xml
在Tomcat安装目录下conf子目录下的server.xml文件中<host>
元素下增加一行配置:
1 | <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/data/log/tomcat" |
其中:
- className 实现Access Log打印的class名称,按照Tomcat官方文档中说必须是:
org.apache.catalina.valves.AccessLogValve
- directory 存放日志文件的目录地址,可以是绝对地址也可以是相对地址。
- prefix Access Log文件名的前缀,如果不设置,则为
access_log.
- suffix Access Log文件名的后缀,如果不设置,则为空字符串””
- renameOnRotate Access Log文件名默认是带日期格式,例如:access2015-12-17.log。如果设置该参数为true,那么Access Log文件名默认是access.log,日志文件会按照日期自动滚动。该参数默认是false。
- pattern 用来格式化打印请求和响应的相关信息,注意:其中
	
代表使用\t来作为分隔符(如果想采用空格作为分隔符,请使用
),"
代表双引号”。
这边只介绍了几个常用的属性,更详细的属性介绍,见文末的参考
下面将介绍一下pattern属性的内容.
pattern属性介绍
pattern属性值主要用来定义打印请求和响应的相关信息,例如:请求时间,请求URL,请求者的IP,HTTP状态码,响应时间,返回的字节数等等。
- %t 日志和时间,例如:[20/Dec/2015:00:00:00 +0800]
- %a 远程IP地址,例如:192.168.1.100
- %A 本机IP地址,例如:192.168.1.1。注意:使用
InetAddress.getLocalHost().getHostAddress();
来打印本机的IP,如果在/etc/hosts中配置了127.0.0.1 本机hostname
,那么将会打印127.0.0.1。 - %r HTTP请求的信息,包括:http方法,请求URL,http协议。例如:”GET /hello-web/sayHello HTTP/1.1”
- %s 响应的HTTP状态码。例如:200,404,502等
- %D 处理该HTTP请求的时间,单位为毫秒。
- %b 发送的字节数,不包含HTTP头部大小。如果是0的话,打印”-“。
- %I 处理当前请求的线程名称,例如:http-nio-8080-exec-475。
也支持打印HTTP headers,cookies,session以及request的属性信息。
- %{xxx}i 打印request的header信息,其中xxx为header的key,例如:打印User Agent信息采用
%{User-Agent}i
。 - %{xxx}o 打印response的header信息,其中xxx为header的key。
- %{xxx}c 打印cookie的信息,其中xxx为cookie的key
- %{xxx}s 打印session的信息,其中xxx为session的key。
这边只只介绍了部分属性,详细内容见官方文档,见文末的参考