Tomcat访问日志浅析 (转)
来自:http://blog.chinaunix.net/uid-20691565-id-3938220.html
Tomcat的访问日志是靠org.apache.catalina.valves.AccessLogValve来控制的,你可以修改$tomcat/conf/server.xml来启用它 ($tomcat是Tomcat安装的目录)。AccessLogValve默认应该是注释掉的,简单的将其注释去掉,然后重启Tomcat就可以了。
以下是Tomcat默认的配置:
<Valve className=“org.apache.catalina.valves.AccessLogValve”
directory=“logs” prefix=“localhost_access_log.” suffix=“.txt”
pattern=“common” resolveHosts=“false”/>
你可以设置日志保存的目录(directory),日志的文件名的前缀(prefix),后缀(suffix)和日志的具体格式。保存目录,文件名的前缀、后缀都很简单,一般默认设置也就可以了。resolveHost出于性能的考虑,一般也设为false. 但访问日志的格式(pattern)却有很多的选项供你选择。以下列出了一些基本的日志格式项:
%a – 远程主机的IP (Remote IP address)
%A – 本机IP (Local IP address)
%b – 发送字节数,不包含HTTP头,0字节则显示 ‘-’ (Bytes sent, excluding HTTP headers, or ‘-’ if no bytes
were sent)%B – 发送字节数,不包含HTTP头 (Bytes sent, excluding HTTP headers)
%h – 远程主机名 (Remote host name)
%H – 请求的具体协议,HTTP/1.0 或 HTTP/1.1 (Request protocol)
%l – 远程用户名,始终为 ‘-’ (Remote logical username from identd (always returns ‘-’))
%m – 请求方式,GET, POST, PUT (Request method)
%p – 本机端口 (Local port)
%q – 查询串 (Query string (prepended with a ‘?’ if it exists, otherwise
an empty string)%r – HTTP请求中的第一行 (First line of the request)
%s – HTTP状态码 (HTTP status code of the response)
%S – 用户会话ID (User session ID)
%t – 访问日期和时间 (Date and time, in Common Log Format format)
%u – 已经验证的远程用户 (Remote user that was authenticated
%U – 请求的URL路径 (Requested URL path)
%v – 本地服务器名 (Local server name)
%D – 处理请求所耗费的毫秒数 (Time taken to process the request, in millis)
%T – 处理请求所耗费的秒数 (Time taken to process the request, in seconds)
你可以用以上的任意组合来定制你的访问日志格式,也可以用下面两个别名common和combined来指定常用的日志格式:
common – %h %l %u %t "%r" %s %b
combined -
%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"
另外你还可以将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)
比如下面是实际的一个访问日志格式的配置:
<Valve className=“org.apache.catalina.valves.AccessLogValve”
directory=“logs” prefix=“phone_access_log.” suffix=“.txt”
pattern=“%h %l %T %t %r %s %b %{Referer}i %{User-Agent}i MSISDN=%{x-up-calling-line-id}i”resolveHosts=“false”/>
其中日志格式(pattern)指定为”%h %l %T %t %r %s %b %{Referer}i %{User-Agent}i MSISDN=%{x-up-calling-line-id}i“,则实际的访问日志中将会包括:
%h – 远程主机名
%l - 远程用户名,始终为 ‘-’
%T - 处理请求所耗费的秒数
%t – 访问日期和时间
%r – HTTP请求中的第一行
%s – HTTP状态码
%b – 发送字节数,不包含HTTP头(0字节则显示 ‘-’)
%{Referer}i – Referer URL
%{User-Agent}i – User agent
MSISDN=%{x-up-calling-line-id}i – 手机号
实际的访问日志如下:
xxx.xxx.xx.xxx – 0.270 [14/Jul/2008:13:10:53 +0800] POST /phone/xxx/gprs HTTP/1.1 200 91812 – SonyEricssonW890i/R1EA Profile/MIDP-2.1 Configuration/CLDC-1.1 MSISDN=11111111111
… …
xxx.xxx.xx.xxx – 0.083 [14/Jul/2008:21:20:55 +0800] POST /phone/xxx/gprs HTTP/1.1 200 404 – SonyEricssonW910i/R1FA Profile/MIDP-2.1 Configuration/CLDC-1.1 MSISDN=11111111111
Tomcat访问日志浅析 (转)的更多相关文章
- Tomcat访问日志详细配置
在server.xml里的<host>标签下加上 <Valve className="org.apache.catalina.valves.AccessLogValve&q ...
- linux系统tomcat项目部署和tomcat访问日志
一.只用ip地址访问 先把端口号改成80,然后用 <Host name="localhost" appBase="webapps" 137 ...
- ELK之收集tomcat访问日志
把tomcat访问日志转换成json格式然后收集 修改配置文件conf/server.xml把日志输出改成json格式 添加logstash配置文件(日志按天切割可以使用*进行匹配所有)
- Tomcat访问日志详细配置(转)
在server.xml里的<host>标签下加上<Valve className="org.apache.catalina.valves.AccessLogValve&qu ...
- tomcat访问日志分析
常使用web服务器的朋友大都了解,一般的web server有两部分日志: 一是运行中的日志,它主要记录运行的一些信息,尤其是一些异常错误日志信息 二是访问日志信息,它记录的访问的时间,IP,访问的资 ...
- 转 Tomcat访问日志详细配置
配置http访问日志.Tomcat自带的能够记录的http访问日志已经很详细了取消下面这段的注释: <Valve className="org.apache.catalina.valv ...
- 通过Nginx,Tomcat访问日志(access log)记录请求耗时
一.Nginx通过$upstream_response_time $request_time统计请求和后台服务响应时间 nginx.conf使用配置方式: log_format main '$remo ...
- ELK收集tomcat访问日志并存取mysql数据库案例
这个案例中,tomcat产生的日志由filebeat收集,然后存取到redis中,再由logstash进行过滤清洗等操作,最后由elasticsearch存储索引并由kibana进行展示. 1.配置t ...
- spring boot Tomcat访问日志
1.Tomcat设置访问日志 <Host name="localhost" appBase="webapps" unpackWARs="true ...
随机推荐
- python笔记33-python3连mysql增删改查
前言 做自动化测试的时候,注册了一个新用户,产生了多余的数据,下次用同一账号就无法注册了,这种情况该怎么办呢? 自动化测试都有个数据准备和数据清理的操作,如果因为此用例产生了多余的数据,就需要数据清理 ...
- Java 如何实现在线预览文档及修改(文本文件)
暂时未解决的问题:多用户并发修改一个文件 测试地址: http://sms.reyo.cn 用户名:aa 密码:123456
- cocos2d-x中CCLabelAtlas的小图片拼接
美术在设计UI时,很多界面可能使用了数字图片来展示一些效果,比如CD或者 x1/x2等,一般她们都会切成很多单张小的图片,类似这样 cocox2d-x中CCLabelAtlas支持直接从图片中读取 ...
- Nvidia驱动正确安装过程
找到适合的正确的驱动 去nvidia驱动官网下载 卸载掉原有驱动 sudo apt-get remove –purge nvidia* 安装驱动 进入命令行界面 Ctrl-Alt+F1 给驱动run文 ...
- 详细解释如何通过Android自带的方式来实现图片的裁剪——原理分析+解决方案
我们很多时候需要进行图片的裁剪,其实这个功能在android系统中已经有一套解决方案了,虽然界面和效果并不是很优秀但功能毫无疑问是完美实现了.至于,不用自带的方案怎么做自定义,这个就是后话了.本篇主要 ...
- 《例说XBee无线模块开发》
<例说XBee无线模块开发> 基本信息 原书名:The Hands-on XBee Lab Manual:Experiments that Teach you XBee Wireless ...
- .Net Core配置文件读取整理
一 .配置文件说明 1.配置,主要是 指在程序中使用的一些特殊参数,并且大多数 仅在程序启动的之后指定不需要修改. 2.在以前.Net项目中配置文件主要指app.config或web.config,但 ...
- Unreal Engine 4 减少编辑器的帧率
默认的,打开UE4的编辑器,显卡会以全速渲染场景,在我的机器上.是120FPS. 整个机器就開始轰鸣了.资源占用太凶了.事实上全然不是必需这样,帧率在60左右就足够了. 那怎么改动呢,试了非常多办法. ...
- 【转】QT中QDataStream中浮点数输出问题
先上代码: C/C++ code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 int main(int argc, char *argv[]) { QApplicati ...
- ubuntu 安装 android studio
总共分三个步骤: 安装JDK 这里引用下别人的安装过程http://blog.csdn.net/bhq2010/article/details/6839762 注:android studio 版本为 ...