博客搬家,本文新地址:http://www.zicheng.net/article/9
 
本文描述如何配置tomcat的访问日志,按我们的要求输出指定的日志格式。
且在Nginx+Tomcat的配置环境中,如何让Tomcat记录访客真实的IP地址
本文为原创内容,转载请注明出处:JDiy官网 http://jdiy.net/read.jsp?id=y0hab3qs03
 
在tomcat的server.xml文件中,host主机配置区域找到类似如下(红色部分)即为访问日志的配置:
 <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
       <!--...部分内容略..-->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
 
其中的directory用于指定日志的存放路径,默认位于tomcat的logs目录中,例如我们可以修改成:
directory="c:/wwwlogs" 使日志放到c:\wwwlogs目录中去。
其中的prefix和suffic分别用于指定日志文件的前缀和后缀,不用我多说。
现在我们主要来看一下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) - 当前请求的线程名称

此外,您可以指定以下别名来设置为普遍使用的模式之一:

    common - %h %l %u %t "%r" %s %b
    combined - %h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"

另外,还可以将request请求的查询参数、session会话变量值、cookie值或HTTP请求/响应头内容的变量值等内容写入到日志文件。
它仿照了apache的语法:

%{XXX}i xxx代表传入的头(HTTP Request)

    %{XXX}o xxx代表传出​​的响应头(Http Resonse)
    %{XXX}c  xxx代表特定的Cookie名
    %{XXX}r  xxx代表ServletRequest属性名
    %{XXX}s xxx代表HttpSession中的属性名
 
举例说明:
  例如我们在架设jsp服务器时,采用Nginx+Tomcat这种配置时,将请求由Nginx转发给Tomcat,当需要在tomcat的日志中记录来访者的真实IP地址信息时,我们就需要做一点点有别于其它的特殊匹配了,要不然tomcat记录的访客IP全都是127.0.0.1, 这是因为所有的请求都是由Nginx前端服务器转发而来的,而前端服务器对于tomcat来说就是127.0.0.1。
 下面,我们来看一下如何让tomcat记录用户的真实IP地址:
 
一、配置Nginx转发IP头:
在Nginx的server主机配置段中添加:
proxy_set_header        Host $host; 
proxy_set_header        X-Real-IP $remote_addr;
说明:上面两行用于向tomcat发送真实的远端主机名和IP地址。其中的Host代表主机名, X-Real-IP代表主机IP,对于HTTP头部内容,这些变量是不区分大小写的。
 
二、配置Tomcat日志记录客户真实IP:
在Tomcat中要记录来访者真实IP,大家参考上面所述的tomcat日志配置语法,只需在日志模式中添加如下模式就行了:%{X-Real-IP}i
如下面完整的Tomcat日志配置段:
<Valve className="org.apache.catalina.valves.AccessLogValve" 
directory="c:/wwwlogs/" prefix="cluster." suffix=".log"
pattern="%{X-Real-IP}i %u %t %r %s %b" resolveHosts="false" />
 
注意:上两两处修改后,您应该重新启动Nginx和Tomcat服务,以使您的修改生效。这样,当有新的请求过来时,便可以在Tomcat日志文件中记录访客的真实IP地址了。
 
=====================================以上为转载
本机配置(不带nginx):
server.xml:
 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
               prefix="localhost_access_log." suffix=".txt" 
               pattern="%h %l %u %t %r %s %b %D %{Cookie}i %{User-Agent}i %{a}r" 
               resolveHosts="false"/>
输出:
127.0.0.1 - - [25/Feb/2013:11:57:29 +0800] GET /app_back/index.do?a=12345 HTTP/1.1 200 59847 688 JSESSIONID=5F171789DDF29AB377F68B52BB18884E; mysessionid=3af66463-79a3-4b6c-a4c5-e7cd39a0aead Mozilla/5.0 (Windows NT 5.1; rv:16.0) Gecko/20100101 Firefox/16.0 -
其中 url中的参数a可以在url中显示出来,但是post方式提交的request中的参数无法记录。

配置Tomcat的访问日志格式化输出的更多相关文章

  1. 成功配置TOMCAT的LOG4J日志系统,格式:HTML+每天以YYYY-MM-DD.LOG命名的日志文件

    关于log4j.properties文件在web项目中放的位置,找过很多,最后实践结果是: 一.web项目 二.放在src的目录里面,然后项目生成后会自动在\WEB-INF\classes文件里有份l ...

  2. centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 访问控制 apache rewrite 配置开机启动apache tcpdump 第二十节课

    centos    LAMP第二部分apache配置  下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转  配置apache的访问日志  配置静态文件缓存  配置防盗链 ...

  3. eclipse配置tomcat,访问http://localhost:8080出现404错误

     问题:通过eclipse来启动tomcat会碰到“访问http://localhost:8080出现404错误”这样的问题,需要在eclipse中进行一系列的设置才行. 解决:打开eclipse的s ...

  4. Eclipse配置Tomcat,访问404错误

    我从官网上面下载的tomcat6,直接启动发现正常使用,但是在Eclipse绑定后启动,访问localhost:8080,本来应该是tomcat的主页,但是却报了404错误. 百度搜索了一下,原来是t ...

  5. tomcat的访问日志

    https://blog.csdn.net/qq_30121245/article/details/52861935 配置位置在这里,每一个域名设置都可以单独设置 %a   这是记录访问者的IP,如果 ...

  6. LNMP配置——Nginx配置 —— Nginx的访问日志

    一.配置 先来看看Nginx的日志格式 #grep -A2 log_format /usr/local/nginx/conf/nginx.conf log_format combined_realip ...

  7. windows配置tomcat https访问

    主要参考两篇: http://blog.csdn.net/minute_man/article/details/53787682 http://blog.csdn.net/chow__zh/artic ...

  8. 配置tomcat,访问端口改为80

    首先:找到tomcat的的config文件夹下的server.xml文件: 编辑server.xml 保存server.xml文件,重启tomcat服务器,即可. 亲测好使.

  9. tomcat服务器不输出访问日志

    有时候一个WEB服务作为接口部署在tomcat下,因为访问很频繁,导致/var/log/tomcat7下的访问日志急剧膨胀,影响服务器的性能. 在这里我的方法是关闭访问日志,关闭方法为将访问日志的输出 ...

随机推荐

  1. 【Windows 10 IoT - 3】Windows 10 RTM安装及新特性(树莓派 Pi2)

    在<[Window 10 IoT - 1]Window 10系统安装(树莓派 Pi2)>中,我们介绍了Windows 10 IoT预览版的安装,正式版Windows 10 IOT(OS版本 ...

  2. Mac上远程桌面连接Windows Server 2012 R2

    在将一台服务器的操作系统由Windows Server 2012升级为Windows Server 2012 R2之后,在Mac电脑上用微软的远程桌面软件怎么也连不上服务器,错误信息如下: Remot ...

  3. Lambda表达式的前世今生

    Lambda 表达式 早在 C# 1.0 时,C#中就引入了委托(delegate)类型的概念.通过使用这个类型,我们可以将函数作为参数进行传递.在某种意义上,委托可理解为一种托管的强类型的函数指针. ...

  4. kali linux系列之启用vpn

    kali linux系列之启用vpn 文/玄魂 默认情况下,kali linux的vpn选项是不可用的. 下面是安装openvpn的方法,同样的,可以安装其他类型的vpn. 打开终端输入命令: Apt ...

  5. 冲刺阶段 day1

    Day 1 项目进展: 通过之前的项目学习,我们已经对我们的耿丹师生基本信息系统项目有了一个方向,又通过昨天和今天的站立会议,大体的编程安排也已经确定了下来,按照之前的编程分工,大家已经开始进行.首先 ...

  6. win系统下nodejs安装及环境配置

    第一步:下载安装文件下载nodejs,官网:http://nodejs.org/download/,我这里下载的是node-v0.10.28-x86.msi,如下图: 第二步:安装nodejs下载完成 ...

  7. 重装Windows系统后,Linux系统启动引导失败

    说明:我的电脑是在装了Windows系统后,装的Linux系统,所以启动引导是Linux干的活.可是,今天重装了Windows系统,启动引导就换成了Windows的,Windows的启动引导把Linu ...

  8. Linux驱动学习步骤(转载)

    1. 学会写简单的makefile 2. 编一应用程序,可以用makefile跑起来 3. 学会写驱动的makefile 4. 写一简单char驱动,makefile编译通过,可以insmod, ls ...

  9. paip.提升用户体验--提升java的热部署热更新能力

    paip.提升用户体验--提升java的热部署热更新能力 想让java做到php那么好的热部署能力  "fix online"/在线修复吗??直接在服务器上修改源码生效,无需重启应 ...

  10. php计算时间差

    echo "今天:".date("Y-m-d")."<br>"; echo "昨天:".date(" ...