Tomcat配置自定义访问日志 --- 获取请求头部信息

使用tomcat,搭建完个人网站后,默认记录来访游客的息是十分有限的,主要有ip和路径以及方法等。 有时候为了获取更多来访息,比如请求头部信息,这个时候就需要我们手动配置log了。 开始

进入Tomcat的根目录,然后 ---> conf ---> context.xml ,修改这个context.xml文件,在它Context标签内加上下面这段代码

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="headers" suffix=".txt" pattern="%t --- %a --- %U --- User-Agent:%{User-Agent}i --- Cookie:%{Cookie}i " resolveHosts="false" />

其中directory是文件目录,文件前缀为headers,后缀为.txt,表明为文本文件,然后关键在于pattern这一段了:

里面就是日志记录的格式,这里就根据个人喜好来自定义了; 百分号%加上指定字母有特定的含义,比如%t就代表访问的时间,%a表示来访者的ip, %U为访问的路径。
需要注意的是%{header}i 指请求的对应头部,如%{User-Agent}i 就代表user-agent头部,如果请求中没有的话,它就为空。
这里有个问题,即没有直接显示访问请求中全部头部的操作,用StackOverflow一哥们的话说就是

There's no way out of the box

翻译过来就是: 没有开箱即用的方法。非要实现只能另外想办法了。

这里附上pattern中相应的字母代表的含义

%a - 远程IP地址

%A - 本地IP地址

%b - 发送的字节数,不包括HTTP头,或“ - ”如果没有发送字节

%B - 发送的字节数,不包括HTTP头

%h - 远程主机名

%H - 请求协议

%l (小写的L)- 远程逻辑从identd的用户名(总是返回' - ')

%m - 请求方法

%p - 本地端口

%q - 查询字符串(在前面加上一个“?”如果它存在,否则是一个空字符串

%r - 第一行的要求

%s - 响应的HTTP状态代码

%S - 用户会话ID

%t - 日期和时间,在通用日志格式

%u - 远程用户身份验证

%U - 请求的URL路径

%v - 本地服务器名

%D - 处理请求的时间(以毫秒为单位)

%T - 处理请求的时间(以秒为单位)

%I (大写的i) - 当前请求的线程名称

上面添加完成后,重启Tomcat,之后,在相应目录就会生成之前你定义的文件,我这里就是在conf目录下多了个headers.----.--.--.txt,-代表相应日期。随便访问下网站,就会发现里面一下多出了好多预期的内容:

Tomcat配置自定义访问日志 --- 获取请求头部信息

cookie我也懒得打马赛克了,问题不大(●'◡'●)

如果想继续深入了解的话, 可以

最后打波广告,欢迎来我新搭建的小窝玩耍
博客经常性的炸,我也很无奈了╯︿╰

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxsyz.html