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 &quot;%r&quot; %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 &quot;%r&quot; %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="{&quot;Forward_addr&quot;:&quot;%{X-FORWARDED-FOR}i&quot; , &quot;remote_addr&quot;:&quot;%h&quot; , &quot;remote_user&quot;:&quot;%u&quot; , &quot;time_local&quot;:&quot;%t&quot; , &quot;http_host&quot;:&quot;%v:%p&quot; , &quot;request&quot;:&quot;%r&quot; , &quot;status&quot;:&quot;%s&quot; , &quot;body_bytes&quot;:&quot;%b&quot; , &quot;request_time&quot;:&quot;%T&quot;}" rotatable="false"/>
12-17 13:35
查看更多