常使用web服务器的朋友大都了解,一般的web server有两部分日志:

  1. 一是运行中的日志,它主要记录运行的一些信息,尤其是一些异常错误日志信息
  2. 二是访问日志信息,它记录的访问的时间,IP,访问的资料等相关信息。

现在我来和大家介绍一下利用tomcat产生的访问日志数据,我们能做哪些有效的分析数据?

首先是配置tomcat访问日志数据,默认情况下访问日志没有打开,配置的方式如下:

编辑 ${catalina}/conf/server.xml 文件.

(注: ${catalina}是tomcat的安装目录,把以下的注释()去掉即可。)

<!--
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".txt"
pattern="common" resolveHosts="false"/>
-->

其中 directory是产生的目录 tomcat安装${catalina}作为当前目录,pattern表示日志生产的格式,common是tomcat提供的一个标准设置格式。

其具体的表达式为 %h %l %u %t "%r" %s %b

但本人建议采用以下具体的配置,因为标准配置有一些重要的日志数据无法生。

%h %l %u %t "%r" %s %b %T

具体的日志产生样式说明如下(从官方文档中摘录):

%a - Remote IP address
%A - Local IP address
%b - Bytes sent, excluding HTTP headers, or '-' if zero
%B - Bytes sent, excluding HTTP headers
%h - Remote host name (or IP address if resolveHosts is false)
%H - Request protocol
%l - Remote logical username from identd (always returns '-')
%m - Request method (GET, POST, etc.)
%p - Local port on which this request was received
%q - Query string (prepended with a '?' if it exists)
%r - First line of the request (method and request URI)
%s - HTTP status code of the response
%S - User session ID
%t - Date and time, in Common Log Format
%u - Remote user that was authenticated (if any), else '-'
%U - 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

There is also support to write information from the cookie, incoming header, the Session or something else in the ServletRequest. It is modeled after the apache syntax:

%{xxx}i for incoming headers

%{xxx}c for a specific cookie

%{xxx}r xxx is an attribute in the ServletRequest

%{xxx}s xxx is an attribute in the HttpSession

现在我们回头再来看一下下面这个配置 %h %l %u %t "%r" %s %b %T 生产的访问日志数据,我们可以做哪些事?

先看一下,我们能得到的数据有:

  • %h 访问的用户IP地址
  • %l 访问逻辑用户名,通常返回'-'
  • %u 访问验证用户名,通常返回'-'
  • %t 访问日时
  • %r 访问的方式(post或者是get),访问的资源和使用的http协议版本
  • %s 访问返回的http状态
  • %b 访问资源返回的流量
  • %T 访问所使用的时间

有了这些数据,我们可以根据时间段做以下的分析处理(图片使用jfreechart工具动态生成):

  • 独立IP数统计
  • 访问请求数统计
  • 访问资料文件数统计
  • 访问流量统计
  • 访问处理响应时间统计
  • 统计所有404错误页面
  • 统计所有500错误的页面
  • 统计访问最频繁页面
  • 统计访问处理时间最久页面
  • 统计并发访问频率最高的页面

分析工具包括两大部分:

  1. 第一个是后台解释程序,每天执行一次对后台日志数据进行解析后保存到数据库中。
  2. 第二个是显示程序,从数据库中查询数据并生成相应的图表信息。

参考原文地址:

  1. http://blog.csdn.net/leizi191110211/article/details/51669431

  2. http://twb.iteye.com/blog/182100

tomcat访问日志分析的更多相关文章

  1. Tomcat访问日志详细配置

    在server.xml里的<host>标签下加上 <Valve className="org.apache.catalina.valves.AccessLogValve&q ...

  2. Tomcat访问日志详细配置(转)

    在server.xml里的<host>标签下加上<Valve className="org.apache.catalina.valves.AccessLogValve&qu ...

  3. 转 Tomcat访问日志详细配置

    配置http访问日志.Tomcat自带的能够记录的http访问日志已经很详细了取消下面这段的注释: <Valve className="org.apache.catalina.valv ...

  4. linux系统tomcat项目部署和tomcat访问日志

    一.只用ip地址访问 先把端口号改成80,然后用 <Host name="localhost"  appBase="webapps"    137     ...

  5. 网站开发进阶(八)tomcat异常日志分析及处理

    tomcat异常日志分析及处理 日志信息如下: 2015-10-29 18:39:49 org.apache.coyote.http11.Http11Protocol pause 信息: Pausin ...

  6. ELK之收集tomcat访问日志

    把tomcat访问日志转换成json格式然后收集 修改配置文件conf/server.xml把日志输出改成json格式 添加logstash配置文件(日志按天切割可以使用*进行匹配所有)

  7. spring boot Tomcat访问日志

    1.Tomcat设置访问日志 <Host name="localhost" appBase="webapps" unpackWARs="true ...

  8. 一、基于hadoop的nginx访问日志分析---解析日志篇

    前一阵子,搭建了ELK日志分析平台,用着挺爽的,再也不用给开发拉各种日志,节省了很多时间. 这篇博文是介绍用python代码实现日志分析的,用MRJob实现hadoop上的mapreduce,可以直接 ...

  9. 通过Nginx,Tomcat访问日志(access log)记录请求耗时

    一.Nginx通过$upstream_response_time $request_time统计请求和后台服务响应时间 nginx.conf使用配置方式: log_format main '$remo ...

随机推荐

  1. [TypeScript] Deeply mark all the properties of a type as read-only in TypeScript

    We will look at how we can use mapped types, conditional types, self-referencing types and the “infe ...

  2. BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第14章节--使用Office Services开发应用程序 新的机器翻译服务

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第14章节--使用Office Services开发应用程序  新的机器翻译服务         机器翻译服务也是继Wor ...

  3. python 创建类先执行metaclass父类__new__ > __init__>__call__ 然后再执行自己的__new__>__init__

    class MyType(type): def __init__(self,*args,**kwargs): print("Mytype __init__",*args,**kwa ...

  4. EJB学习笔记之十(BMT事务和CMT事务)

     1.前言 前两篇博客主要介绍了与事务相关的知识.比如事务的一些特性,以及并发产生的问题.本篇来解说一下EJB中两种处理事务的方式.一种是以生命式方式来管理事务(CMT):还有一种则是在EJB内部使用 ...

  5. 基于python的ardrone control源码分析与心得

    这里有一段python代码,可用于操控ardrone 2.0.实验室曾经借鉴用过,并添加了部分功能.如今复习一下,顺便理理python的相关知识点. #!/usr/bin/env python # A ...

  6. poj 3696 The Luckiest number 欧拉函数在解a^x=1modm的应用

    题意: 给一个L,求长度最小的全8数满足该数是L的倍数. 分析: 转化为求方程a^x==1modm. 之后就是各种数学论证了. 代码: //poj 3696 //sep9 #include <i ...

  7. sql中update,alter,modify,delete,drop的区别和使用(整理)

    关于update和alter: 百度知道上关于update和alter有一个很形象的总结: 一个表有很多字段,一个字段里有很多数据. 一个家有很多房间,一个房间里有很多家具. update是用来将衣柜 ...

  8. sqlserver用户角色相关的权限

  9. C语言 指向结构体变量的指针

    一个指向变量的指针表示的是占内存中起始位置 一个指向结构体的变量的指针表示的是这个结构体变量占内存中的起始位置,同样它也可以指向结构体变量数组 定义结构体变量的指针: //假设已有一个结构体名为Stu ...

  10. UVA 11014 - Make a Crystal(容斥原理)

    UVA 11014 - Make a Crystal 题目链接 题意:给定一个NxNxN的正方体,求出最多能选几个整数点.使得随意两点PQ不会使PQO共线. 思路:利用容斥原理,设f(k)为点(x, ...