<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt" pattern="%s %D %t %a %U" fileDateFormat="yyyy-MM-dd.HH" resolveHosts="false"/>
上面的日志会记录:http状态码 运行时长 时间 IP 请求的地址
fileDateFormat每小时保存一个。去掉的话。默认是一天。由于日志太大所以改成每小时生成一个。

调试完了,须要关闭。

Tomcat的訪问日志是靠org.apache.catalina.valves.AccessLogValve来控制的。你能够改动$tomcat/conf/server.xml来启用它 ($tomcat是Tomcat安装的文件夹)。

AccessLogValve默认应该是凝视掉的,简单的将其凝视去掉。然后重新启动Tomcat就能够了。

下面是Tomcat默认的配置:

<valve classname=“org.apache.catalina.valves.accesslogvalve”< p=""></valve classname=“org.apache.catalina.valves.accesslogvalve”<>

directory=“logs” prefix=“localhost_access_log.” suffix=“.txt”

pattern=“common” resolveHosts=“false”/>

你能够设置日志保存的文件夹(directory),日志的文件名称的前缀(prefix)。后缀(suffix)和日志的详细格式。保存文件夹,文件名称的前缀、后缀都非常easy,一般默认设置也就能够了。

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 – 远程username,始终为 ‘-’ (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, client请求中带的HTTP头(incoming header), 会话(session)或是ServletRequest中的数据都写到Tomcat的訪问日志中,你能够用以下的语法来引用。

%{xxx}i – 记录client请求中带的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”< p=""></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 - 远程username。始终为 ‘-’

%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訪问日志浅析的更多相关文章

  1. Nginx 訪问日志增长暴增出现尖刀的具体分析

    前言:          Nginx日志里面Mobileweb_access.log增长特别大.一天上百兆.将近100W的訪问记录.依照我们眼下的规模,热点用户才500个左右.就算人人用手机app訪问 ...

  2. tomcat URL简写案例:模拟站点www.baidu.com的訪问

    tomcat URL简写案例:模拟站点  * 实际URL:http://www.baidu.com:8080/myweb/1.html  * 实际位置:F:\mywebapps\myweb\1.htm ...

  3. Tomcat可以在eclipse里启动,可是不能訪问首页的问题

    今天在使用eclipse的时候发现一个问题.就是我在eclipse里面已经启动了tomcat.部署上去的项目也能够启动,可是就是没法訪问tomcat的首页.port等等都没有问题. 后来查到解决方式, ...

  4. 把war包放到Tomcat安装文件夹下,不能直接訪问的解决方式

    临床表现: Tomcat启动后首页能訪问(http://localhost:8080/). 将自己写的一个webprojectwar包放到Tomcat安装文件夹下的/webapps以下(比方hello ...

  5. tomcat的webapps文件夹下放更新后的项目就訪问不了

    昨天给同事更新完程序,同事说更新后的程序訪问不了.它曾经的程序叫tj52,更新后的程序叫webapp.也就是tomcat的文件夹有两个文件架,一个叫webapp,一个叫tj52.最后另外一同事给了解决 ...

  6. 严重: Error in dependencyCheck java.io.IOException: invalid header field(tomcat启动成功可是訪问web项目404错误)

    tomcat启动的时候出现 严重: Error in dependencyCheck java.io.IOException: invalid header field 而且tomcat也不自己主动r ...

  7. tomcat 实现域名crm.test.com訪问

    **tomcat 上下文.实现的效果.是在浏览器输入ip或者域名能直接訪问.不用输入项目project名字 正常初始化都是http://10.243.12.34:8080/plcrm.要变成 crm. ...

  8. Tomcat访问日志浅析 (转)

    来自:http://blog.chinaunix.net/uid-20691565-id-3938220.html Tomcat的访问日志是靠org.apache.catalina.valves.Ac ...

  9. Spring ORM数据訪问——Hibernate

    Hibernate 我们将首先介绍Spring环境中的Hibernate 5.然后介绍使用Hibernate 5来演示Spring集成O-R映射器的方法. 本节将具体介绍很多问题,并显示DAO实现和事 ...

随机推荐

  1. 学习Android Studio里的Gradle

    一直听说Gradle很强大,只是偶尔用Android Studio创建Demo的时候看到他一次,今天抽个时间完整记录一下. 1.gradle位置 Android Studio项目创建好之后,默认有3个 ...

  2. c3p0、dbcp、proxool、BoneCP比较

    1.1 测试环境: 操作系统:windows xp sp3 数据库:mysql 5.1 1.2 测试条件: initialSize=30; maxSize=200; minSize=30; 其余参数为 ...

  3. 修改后无警告全面支持non-ARC以及ARC的OpenUDID

    OpenUDID Open source initiative for a universal and persistent UDID solution for iOS. 首创的给iOS提供设备唯一标 ...

  4. ORACLE 修改已有存储过程(plsql工具修改)

    pl/sql 修改包下存储过程步骤: 假定有如下过程:pkg_ypgl_query.PROC_KCZQUERY; 1. pl/sql 右侧objects面板中选择Package bodies>P ...

  5. Spring jdbcTemplat 写入BLOB数据为空

        近日做平台新闻接口,数据库用的是Oracle10g,项目使用Spring框架,新闻表内有一字段为BLOB类型,可是在写入时遇到了写入后BLOB字段为空,替换了Spring 的jar包无效,跟b ...

  6. go语言基础之切片做函数参数

    1.切片做函数参数 (备注:用了冒泡排序) 示例: package main //必须有个main包 import "fmt" import "math/rand&quo ...

  7. SonarQube代码质量管理平台 的安装、配置与使用

    SonarQube是管理代码质量一个开放平台,可以快速的定位代码中潜在的或者明显的错误,下面将会介绍一下这个工具的安装.配置以及使用. 准备工作: 1.jdk(不再介绍) 2.sonarqube:ht ...

  8. 默认网关和默认路由 —— Cisco CCNA – Default Gateway & Default Routes

    原文:https://www.certificationkits.com/cisco-certification/ccna-articles/cisco-ccna-intro-to-routing-b ...

  9. SqlServer 在查询结果中如何过滤掉重复数据

    问题背景 在一个多表查询的sql中正常情况下产生的数据都是唯一的,但因为数据库中存在错误(某张表中存在相同的外键ID)导致我这边查询出来的数据就会有重复的问题 下面结果集中UserID:15834存在 ...

  10. Jmeter+Ant+Jenkins搭建持续集成的接口测试框架

    https://my.oschina.net/hellotest/blog/516079 摘要: 一个系统通常有多个接口,软件的生命周期中,我们会不断的去优化老的接口和开发新的接口,那么在这个过程中, ...