tomcat-日志修改
tomcat日志配置参数及说明
| 参数 | 说明 |
|---|---|
| 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
tomcat自身系统日志
cat tomcat/bin/catalina.sh
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
修改"$CATALINA_BASE"/logs为自定义日志路径,默认tomcat/logs
- localhost_access_log.txt
tomcat访问日志
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"/>

浙公网安备 33010602011771号