导航菜单
路很长,又很短
博主信息
昵   称:Cocodroid ->关于我
Q     Q:2531075716
博文数:356
阅读量:1663844
访问量:207492
至今:
×
云标签 标签球>>
云标签 - Su的技术博客
博文->>首页 博主的更多博文>>
Tomcat日志json格式
Tags : Tomcat,日志,json发表时间: 2017-12-10 13:01:18
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。
比如: 转自:Su的技术博客  原文地址:

    想要修改Tomcat的默认格式为json格式,只需要在配置文件上改即可。这里以access log日志为例。

    1、Tomcat的默认日志格式为:

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

    效果是这样:

    51.255.71.133 - - [09/Dec/2017:22:41:59 +0800] "GET /search?keywords=%E4%B8%9A%E5%8A%A1%E7%B3%BB%E7%BB%9F&offset=1 HTTP/1.1" 200 17664

    


    2、只要在conf/server.xml上的context上Valve pattern 上修改即可:

    想要这样的效果:

{"clientip":"116.24.22.237","realip":"-","ClientUser":"-","authenticated":"-,"AccessTime":"[09/Dec/2017:23:03:00 +0800]","method":"GET /traffic?fromUrl=&toUrl=http%3A//blog.verysu.com/ HTTP/1.1","status":"200","SendBytes":"-","Query?string":"?fromUrl=&toUrl=http%3A//blog.verysu.com/","partner":"http://blog.verysu.com/","AgentVersion":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"}

    即是:

{
    "clientip": "116.24.22.237",
    "realip": "-",
    "ClientUser": "-",
    "authenticated": "-",
    "AccessTime": "[ 09/Dec/2017: 23: 03: 00+0800  ]",
    "method": "GET/traffic?fromUrl=&toUrl=http%3A//blog.verysu.com/HTTP/1.1",
    "status": "200",
    "SendBytes": "-",
    "Query?string": "?fromUrl=&toUrl=http%3A//blog.verysu.com/",
    "partner": "http: //blog.verysu.com/",
    "AgentVersion": "Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.}36(KHTML, likeGecko)Chrome/55.0.2883.87Safar/537.36"
}
    需要改的格式为:(注意:双引号需要用"替换

{
    "clientip": "%h",
    "realip": "%{X-FORWARDED-FOR}i",
    "ClientUser": "%l",
    "authenticated": "%u",
    "AccessTime": "%t",
    "methodanduri": "%r",
    "method": "%m",
    "protocol": "%H",
    "status": "%s",
    "SendBytes": "%b",
    "Query?string": "%q",
    "partner": "%{Referer}i",
    "AgentVersion": "%{User-Agent}i"
}
即:

  pattern="{"clientip":"%h","realip":"%{X-FORWARDED-FOR}i","ClientUser":"%l","authenticated":"%u","AccessTime":"%t","method and uri":"%r","method":"%m","protocol":"%H","status":"%s","SendBytes":"%b","Query?string":"%q","partner":"%{Referer}i","AgentVersion":"%{User-Agent}i"}"



    3、最终的配置文件长这样:

<Host name="blog.verysu.com"
            unpackWARs="true" autoDeploy="true">
                <Context path="" docBase="..."  reloadable="true"/>
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_blog_log." suffix=".log"
               pattern="{&quot;clientip&quot;:&quot;%h&quot;,&quot;realip&quot;:&quot;%{X-FORWARDED-FOR}i&quot;,&quot;ClientUser&quot;:&quot;%l&quot;,&quot;authenticated&quot;:&quot;%u&quot;,&quot;AccessTime&quot;:&quot;%t&quot;,&quot;method and uri&quot;:&quot;%r&quot;,&quot;method&quot;:&quot;%m&quot;,&quot;protocol&quot;:&quot;%H&quot;,&quot;status&quot;:&quot;%s&quot;,&quot;SendBytes&quot;:&quot;%b&quot;,&quot;Query?string&quot;:&quot;%q&quot;,&quot;partner&quot;:&quot;%{Referer}i&quot;,&quot;AgentVersion&quot;:&quot;%{User-Agent}i&quot;}"/>
</Host>
    

    附加:配置参数的说明地址:http://twb.iteye.com/blog/182100

%a      

这是记录访问者的IP,在日志里是127.0.0.1

%A
这是记录本地服务器的IP,在日志里是192.168.254.108

%b
这是发送信息的字节数,不涵括http头,如果字节数为0的话,显示为-

%B
看tomcat的解释,没看出来与b%的区别,但我这里显示为-1,没想明白,望知道者告知,我把官方解释贴出来吧 Bytes sent, excluding HTTP headers

%h
这个就是服务器名称了,如果resolveHosts为false的话,这里就是IP地址了,我的日志里是127.0.0.1

%H
访问者使用的协议,这里是HTTP/1.1

%l
这个也不太清楚,官方也说这个always return '-' 官方解释:Remote logical username from identd (可能这样翻译:记录浏览者进行身份验证时提供的名字)(always returns '-')

%m
访问的方式,是GET还是POST,我这是GET

%p
本地接收访问的端口,呵呵,我这里是80啦

%q
比如你访问的是aaa.jsp?bbb=ccc,那么这里就显示?bbb=ccc,明白了吧,这个q是querystring的意思

%r
官方解释:First line of the request (method and request URI),不是很明白

%s
这个是http的状态,我这里返回的是304,咱们经常看见访问某个网页报错误500什么的,那也会返回500

%S
用户的session ID,这个session ID大家可以另外查一下详细的解释,反正每次都会生成不同的session ID

%t
这就是时间啦,好像有一个Common Log Format可以改,不过我没找到

%u
得到了验证的访问者,否则就是"-"

%U
访问的URL地址,我这里是/rightmainima/leftbott4.swf

%v
服务器名称,可能就是你url里面写的那个吧,我这里是localhost

%D
官方解释:Time taken to process the request, in millis,应该是访问发生的时间,以毫秒记

%T
官方解释:Time taken to process the request, in seconds,应该是访问发生的时间,以秒记

    完美收工!~



打赏
打赏
关注公众号
公众号
类别:Java| 阅读(2374)| 赞 (1)
上一篇 : 【干货】Java线程与操作系统线程的关系
下一篇: IDEA激活方法
评论
暂无评论!
发表评论
昵  称:

验证码:

内  容:

    同时赞一个 赞

推荐文章