tomcat访问(access)日志配置、记录Post请求参数
来源:互联网 发布:学生空间七天网络app 编辑:程序博客网 时间:2024/05/19 16:50
一、配置与说明
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 "%r" [%{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 官方文档上说了:This MUST be set to org.apache.catalina.valves.AccessLogValve to use the default access log valve。directory日志文件存放的目录。通常设置为tomcat下已有的那个logs文件。prefix日志文件的名称前缀。suffix日志文件的名称后缀。pattern最主要的参数。下面会细讲。resolveHosts如果是true,tomcat会将这个服务器IP地址通过DNS转换为主机名;如果是false,就直接写服务器IP地址啦。默认false。rotatable 默认为true,tomcat生成的文件名为prefix(前缀)+.+时间(一般是按天算)+.+suffix(后缀),如:localhost_access_log.2007-09-22.txt。设置为false的话,tomcat会忽略时间,不会生成新文件,文件名就是:localhost_access_log.txt。长此以往,这个日志文件会超级大condition这个参数不太实用,可设置任何值,比如设置成condition="tkq",那么只有当ServletRequest.getAttribute("tkq")为空的时候,该条日志才会被记录下来。fileDateFormat 顾名思义,就是时间格式嘛。但这个时间格式是针对日志文件名起作用的。咱们生成的日志文件全名:localhost_access_log.2016-09-22.txt,这里面的2016-09-22就是这么来的。如果想让tomcat每小时生成一个日志文件,也很简单,将这个值设置为:fileDateFormat="yyyy-MM-dd.HH",当然也可以按分钟生成什么的,自己改改吧^_^
下面着重讲下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的值的最后两个为什么会这样,我也不太清楚)
二、配置打印POST参数
另外%r参数能打印出请求的url和get参数。如果url指定访问方式是post,post的参数是打印不出来的。当需要打印post参数,该怎么办?
大家注意到我开篇举例Valve配置里的%{postdata}r。没错,这个combined格式的patterrn可以实现。但是只在valve里配置这个东东还不够。因为postdata使我们自定义的参数名。需要在request中设置这个值。下面附上设置postdata到request中的代码。
在web.xml中添加配置该filter:
三、查询访问最耗时的接口
这就要用到万能的awk了 我们的日志倒数第二列显示的访问时间。cat logs/localhost_access_log.2016-10-25.txt | awk '{print $(NF-1)" "$0}' | sort -n -r| awk '{$1="";print $0}' 按照倒数第二列由大到小显示接口以及访问时间。这样我们就能找出那些借口耗时较大,然后对其进行优化,提高用户体验。
- tomcat访问(access)日志配置、记录Post请求参数
- Tomcat的访问日志-localhost_access_log和记录Post请求参数
- Tomcat的访问日志-localhost_access_log和记录Post请求参数
- 通过Nginx,Tomcat访问日志(access log)记录请求耗时
- 通过Nginx,Tomcat访问日志(access log)记录请求耗时
- 在nginx日志的access log中记录post请求的参数值
- tomcat访问(access)日志配置与查询
- tomcat访问(access)日志配置与查询
- tomcat配置记录访问ip日志
- Linux下Tomcat访问日志参数配置
- tomcat的acess_log打印post请求参数,分析日志
- Tomcat 访问日志记录
- tomcat记录访问日志
- apache&tomcat access访问日志
- [nginx]如何在access log中记录post请求的参数
- 配置tomcat访问日志
- 配置tomcat访问日志
- Tomcat访问日志配置
- iOS- "_OBJC_CLASS_$_WKWebView", referenced from: 解决记录
- 2017/11/07
- svn权限配置
- Xilinx SDK下载失败的解决方法
- Eclipse里复制maven项目需要改动的地方
- tomcat访问(access)日志配置、记录Post请求参数
- 表格行与列边框样式处理的原理分析及实战应用
- 鹿晗是如何成功表白关晓彤的?
- Flume or Kafka for Real-Time Event Processing
- base编码解码原理
- sql server 查询数据库所有的表名+字段
- FastDFS搭建
- 动态规划
- 软件工程(c编码实践篇) 学习总结