关于Tomcat访问日志即localhost_access_log.2023-06-18.txt的分析和配置
一般的web server有两部分日志:一是运行的日志,它主要记录运行的一些信息,尤其是一些异常错误日志信息;二是访问日志信息,他是记录的访问的时间,ip,url,sessionId等信息。下面来介绍使用tomcat记录访问日志的使用,这个是在如果想自己定义书写的文件的格式可以对上面的pattern里面的内容进行修改,可以修改的参数有以下数据。
一般的web server有两部分日志:
一是运行的日志,它主要记录运行的一些信息,尤其是一些异常错误日志信息;
二是访问日志信息,他是记录的访问的时间,ip,url,sessionId等信息。
下面来介绍使用tomcat记录访问日志的使用,这个是在tomcat/conf/server.xml
文件,需要配置如下的配置:
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log"
suffix=".txt"/>
有的版本可能默认不开启记录,只需要把这解注释就好了,记录的文件默认放在/tomcat/logs/${file},默认是每天产生一个文件,产生的文件类似于:
localhost_access_log.2023-06-11.txt
localhost_access_log.2023-06-12.txt
localhost_access_log.2023-06-13.txt
日志文件里面的内容类似于:
66.249.55.170 - - [11/Jun/2023:00:14:51 +0800] "GET /login HTTP/1.1" 200 6541
101.32.44.117 - - [11/Jun/2023:00:11:56 +0800] "-" 400 -
102.32.11.117 - - [11/Jun/2023:00:12:56 +0800] "-" 401 -
101.32.22.117 - - [12/Jun/2023:00:13:57 +0800] "-" 404 -
103.32.33.117 - - [12/Jun/2023:00:14:57 +0800] "-" 302 -
如果想自己定义书写的文件的格式可以对上面的pattern里面的内容进行修改,可以修改的参数有以下数据
具体的日志产生样式说明如下(从官方文档中摘录):
%a - 远端IP地址
%A - 本地IP地址
%b - 发送的字节数,不包括HTTP头,如果为0,使用"-"
%B - 发送的字节数,不包括HTTP头
%h - 远端主机名(如果resolveHost=false,远端的IP地址)
%H - 请求协议
%l - 从identd返回的远端逻辑用户名(总是返回 '-')
%m - 请求的方法(GET,POST,等)
%p - 收到请求的本地端口号
%q - 查询字符串(如果存在,以 '?'开始)
%r - 请求的第一行,包含了请求的方法和URI
%s - 响应的状态码
%S - 用户的session ID
%t - 日志和时间,使用通常的Log格式
%u - 认证以后的远端用户(如果存在的话,否则为'-')
%U - 请求的URI路径
%v - 本地服务器的名称
%D - 处理请求的时间,以毫秒为单位
%T - 处理请求的时间,以秒为单位
// 另外还可以将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)
附:做一个在线分析访问日志的页面
假设pcaccess.log是某应用的accesslog
a.查看日志中访问次数最多的前10个IP
cat pcaccess.log|cut -d ’ ’ -f 1 |sort |uniq -c | sort -nr | awk ‘{print $0 }’ | head -n 10 |less
b.查看日志中出现100次以上的IP
#cat pcaccess.log |cut -d ’ ’ -f 1 |sort |uniq -c | awk ‘{if ($1 > 100) print $0}’|sort -nr |less
c.查看最近访问量最高的URL
假设第九个位置是url,则命令如下:
#cat pcaccess.log |tail -10000|awk ‘{print $9}’|sort|uniq -c|sort -nr|less
左边的数字是出现的次数,右边的参数是对应的URL
d.查看最近访问量最高的页面(.jsp)
#cat pcaccess.log |awk ‘{print $9}’|grep ‘.jsp’|sort|uniq -c|sort -nr |head -n 10
e.查看日志中访问超过100次的页面
#cat pcaccess.log | cut -d ’ ’ -f 9| sort |uniq -c | awk ‘{if ($1 > 100) print $0}’ | less
f.某天访问网站的独立IP有多少
#cat pcaccess.log|grep ‘17/Oct/2012’|grep “******”|wc|awk ‘{print $1}’|uniq
g.统计某类url,一天的访问次数
#cat pcaccess.log |grep ‘17/Oct/2012’|awk ‘{print $9}’|grep ‘/model.html’|wc -l
h.列出传输时间超过 3 秒的文件
首先把请求时间和文件提取出来(假如倒数第四个域是请求时间)
#cat pcaccess.log|awk ‘{print 9 , 9 , 9,(NF-4)}’ >timeurl
找出传输时间超过3s的文件
#cat timeurl|awk ‘($NF > 3){print $1,$2}’
找出传输时间超过3s的文件并且出现次数最多的前20个
#cat timeurl|awk ‘($NF > 3){print $1}’|sort -n|uniq -c|sort -nr|head -20
i.列出传输最大的几个exe文件(分析下载站的时候常用)
#cat pcaccess.log |awk ‘($7~/.exe/){print $14,$9}’|sort -nr|head -20
j.统计404的连接
#awk ‘($12 ~/404/)’ pcaccess.log | awk ‘{print $12,$9}’ | sort|uniq -c|sort -nr
k.统计http status
#cat pcaccess.log |awk ‘{counts[$(12)]+=1}; END {for(code in counts) print code, counts[code]}’
#cat pcaccess.log |awk ‘{print $12}’|sort|uniq -c|sort -rn
统计意向 转载于 https://blog.csdn.net/weixin_34406796/article/details/93072464
页面制作中,敬请期待…
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)