className | 实现的java类名,必须设置成org.apache.catalina.valves.AccessLogValve; |
directory | 存放日志文件的目录; |
pattern | 需要记录的日志信息的格式布局,如果是”common”或者”combined”,说明是使用的标准记录格式,也有自定义的格式; |
prefix | 日志文件名的前缀,如果没有指定,缺省值是”access_log.;(要注意后面有个小点); |
resolveHosts | 将远端主机的IP通过DNS查询转换成主机名,设为true。如果为false,忽略DNS查询,报告远端主机的IP地址; |
sufix | 日志文件的后缀名。(sufix=”.log”);也需要注意有个小点; |
rotatable | 缺省值为true,决定日志是否要翻转,如果为false则永不翻转,并且忽略fileDateFormat,谨慎使用。 |
condition | 打开条件日志 |
fileDateFormat | 允许在日志文件名称中使用定制的日期格式。日志的格式也决定了日志文件翻转的频率。'如果想每小时翻转一次,可以定义为“yyyy-MM-dd.HH”;' |
- 具体的日志产生样式说明如下(从官方文档中摘录):
%a | 远端IP地址 |
%h | 远端主机名(如果resolveHost=false,远端的IP地址) |
%A | 本地IP地址 |
%v | 访问url名称信息 |
%p | 收到请求的本地端口号 |
%b | 发送的字节数,不包括HTTP头,如果为0,使用"-" |
%B | 发送的字节数,不包括HTTP头 |
%m | 请求的方法(GET,POST,等) |
%U | 请求的URI路径 |
%q | 查询字符串(如果存在,以 '?'开始) |
%H | 请求协议 |
%r | 请求的第一行,包含了请求的方法和URI |
%s | 响应的状态码 |
%t | 日志和时间,使用通常的Log格式 |
%D | 处理请求的时间,以毫秒为单位 |
%T | 处理请求的时间,以秒为单位 |
%l | 从identd返回的远端逻辑用户名(总是返回 '-') |
%S | 用户的session ID |
%u | 认证以后的远端用户(如果存在的话,否则为'-') |
- 另外还可以将cookie, 客户端请求中带的HTTP头(incoming header), 会话(session)或是ServletRequest中的数据都写到Tomcat的访问日志中,你可以用下面的语法来引用。
%{xxx}i | 记录客户端请求中带的HTTP头xxx(incoming headers) |
%{xxx}c | 记录特定的cookie xxx |
%{xxx}r | 记录ServletRequest中的xxx属性(attribute) |
%{xxx}s | 记录HttpSession中的xxx属性(attribute) |
一、修改日志名称以及路径
catalina.out
cat tomcat/bin/catalina.sh
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
修改"$CATALINA_BASE"/logs
为自定义日志路径,默认tomcat/logs
localhost_access_log.txt
cat conf/server.xml
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
修改directory="logs"
为自定义日志路径,默认tomcat/logs
catalina.log | localhost.log | manager.log | host-manager.log
cat conf/logging.properties
1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
3manager.org.apache.juli.AsyncFileHandler.level = FINE
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
修改${catalina.base}/logs
为自定义日志路径,默认tomcat/logs/
二、修改日志不按照日志分割
localhost_access_log.txt
cat conf/server.xml
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" rotatable="false"/>
在结尾处,增加rotatable="false"来消除文件名中的日期
catalina.log | localhost.log | manager.log | host-manager.log
cat conf/logging.properties
1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.rotatable = false
2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
2localhost.org.apache.juli.AsyncFileHandler.rotatable = false
3manager.org.apache.juli.AsyncFileHandler.level = FINE
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
3manager.org.apache.juli.AsyncFileHandler.rotatable = false
4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
4host-manager.org.apache.juli.AsyncFileHandler.rotatable = false
在每日志结尾处,增加 XXX.rotatable = false 来消除文件名中的日期.
三、将访问日志修改为json格式
- localhost_access_log.txt
cat conf/server.xml
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="{"Forward_addr":"%{X-FORWARDED-FOR}i" , "remote_addr":"%h" , "remote_user":"%u" , "time_local":"%t" , "http_host":"%v:%p" , "request":"%r" , "status":"%s" , "body_bytes":"%b" , "request_time":"%T"}" rotatable="false"/>