当前位置: 首页 > 工具软件 > iphone tomcat > 使用案例 >

tomcat的localhost_access.log配置(pattern)

艾令秋
2023-12-01

一、配置与说明

tomcat访问日志格式配置,在config/server.xml里Host标签下加上

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; [%{postdata}r] %s %{Referer}i %{User-Agent}i %T %b" />

我们在日志文件中将看到如下文本:

10.217.14.16 - - [21/Oct/2016:15:48:54 +0800] "POST /updates/related_notice_num.json HTTP/1.0" [channel=App Store&gid=92391918-2173-4A66-8B31-B2FB3F8FB3DF&os=2&plat=2&sver=10.000000&token=MzM1OTc0MjQ1MkB3ZWliby55bXguY29tfHdlaWJvfDQ5ZGFmMjk0YjQ5YWQxMTZiZjBmYWM4ZDdhYzg3ZWQ0&ua=&ver=4.2.1] 200 - AllApp/4.2.1 (iPhone; iOS 10.0.2; Scale/3.00) 0.004 91

参数说明:

属性描述
className

要使用的实现的Java类名。这必须设置为 org.apache.catalina.valves.AccessLogValve以使用默认访问日志阀。要使用专为生产用途设计的更优化的访问日志阀,必须将此属性设置为 org.apache.catalina.valves.FastCommonAccessLogValve。在这种情况下,仅 支持commoncombined模式。

directory

将放置由此阀创建的日志文件的目录的绝对路径名或相对路径名。如果指定了相对路径,则将其解释为相对于$ CATALINA_HOME。如果未指定目录属性,则默认值为“logs”(相对于$ CATALINA_HOME)。

pattern

一种格式化布局,用于标识要记录的请求和响应中的各种信息字段,或单词 commoncombined选择标准格式。有关配置此属性的详细信息,请参阅下文。请注意,优化访问仅支持 commoncombined作为此属性的值。

prefix

前缀添加到每个日志文件名称的开头。如果未指定,则默认值为“access_log。”。要指定无前缀,请使用零长度字符串。

resolveHosts

设置为true通过DNS查找将远程主机的IP地址转换为相应的主机名。设置为 false跳过此查找,然后报告远程IP地址。

suffix

后缀添加到每个日志文件名称的末尾。如果未指定,则默认值为“”。要指定无后缀,请使用零长度字符串。

rotatable

默认为true。用于确定是否应发生日志轮换的标志。如果设置为false,则永远不会旋转此文件并 忽略fileDateFormat。谨慎使用!

condition

打开条件记录。如果设置,则仅当ServletRequest.getAttribute()为null时才会记录请求。例如,如果此值设置为 垃圾,则只有在ServletRequest.getAttribute(“junk”)== null时才会记录特定请求。使用Filters是在许多不同请求中设置/取消设置ServletRequest中的属性的简单方法。

fileDateFormat

允许访问日志文件名中的自定义日期格式。日期格式还决定文件旋转的频率。如果您希望每小时旋转一次,请将此值设置为:yyyy-MM-dd.HH

pattern属性的值由文字文本字符串组成,与前缀为“%”字符的模式标识符组合,以替换当前请求和响应中的相应变量值。支持以下模式代码:

  • %a - 远程IP地址
  • %A - 本地IP地址
  • %b - 发送的字节数,不包括HTTP标头,如果为零则为“ - ”
  • %B - 发送的字节数,不包括HTTP标头
  • %h - 远程主机名(如果resolveHosts为false,则为IP地址 )
  • %H - 请求协议
  • %l - 来自identd的远程逻辑用户名(始终返回' - ')
  • %m - 请求方法(GET,POST等)
  • %p - 收到此请求的本地端口
  • %q - 查询字符串(前缀为'?',如果存在)
  • %r - 请求的第一行(方法和请求URI)
  • %s - 响应的HTTP状态代码
  • %S - 用户会话ID
  • %t - 日期和时间,采用通用日志格式
  • %u - 经过身份验证的远程用户(如果有),否则为“ - ”
  • %U - 请求的URL路径
  • %v - 本地服务器名称
  • %D - 以毫秒为单位处理请求所用的时间
  • %T - 处理请求所用的时间,以秒为单位
  • %I - 当前请求线程名称(稍后可以与stacktraces进行比较)

还支持从cookie,传入头,传出响应头,Session或ServletRequest中的其他内容中写入信息。它以apache语法为模型:

  • %{xxx}i 传入请求标头
  • %{xxx}o 用于传出响应标头
  • %{xxx}c 对于特定的请求cookie
  • %{xxx}r xxx是ServletRequest中的一个属性
  • %{xxx}s xxx是HttpSession中的一个属性

下面着重讲下pattern。它的参数比较多。可以设置成common,combined两种格式。

common的值:%h %l %u %t %r %s %b
combined的值:%h %l %u %t %r %s %b %{Referer}i %{User-Agent}i        (至于combined的值的最后两个为什么会这样,我也不太清楚)

%a   这是记录访问者的IP,在日志里是127.0.0.1
%A   这是记录本地服务器的IP,在日志里是192.168.254.108
%b   发送信息的字节数,不包括http头,如果字节数为0的话,显示为-
%B   发送信息的字节数,不包括http头。
%h   服务器的名称。如果resolveHosts为false的话,这里就是IP地址了,例如我的日志里是10.217.14.16
%H   访问者的协议,这里是HTTP/1.0
%l   官方解释:Remote logical username from identd (可能这样翻译:记录浏览者进行身份验证时提供的名字)(always returns '-')
%m   访问的方式,是GET还是POST
%p   本地接收访问的端口 
%q   比如你访问的是aaa.jsp?bbb=ccc,那么这里就显示?bbb=ccc,就是querystring的意思
%r   First line of the request (method and request URI) 请求的方法和URL
%s   http的响应状态码 
%S   用户的session ID,这个session ID大家可以另外查一下详细的解释,反正每次都会生成不同的session ID
%t   请求时间
%u   得到了验证的访问者,否则就是"-"
%U   访问的URL地址,我这里是/rightmainima/leftbott4.swf
%v   服务器名称,可能就是你url里面写的那个吧,我这里是localhost
%D   Time taken to process the request,in millis,请求消耗的时间,以毫秒记
%T   Time taken to process the request,in seconds,请求消耗的时间,以秒记
附:参考官方文档: http://tomcat.apache.org/tomcat-5.5-doc/config/valve.html



作者:冲顶远角 
来源:CSDN 
原文:https://blog.csdn.net/qq_30121245/article/details/52861935 
版权声明:本文为博主原创文章,转载请附上博文链接!

 类似资料: