修改 tomcat 配置文件,解决应用数据统计,增加head 信息,使用pandas 读取

本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/79960712

1,关于tomcat日志


首先,做app 开发都是使用rest 接口的,但是没有cookie 登录信息啥的。
一般登录之后在 head 放个 token 信息。用来验证用户登录。
把这个token 反应到 access log 上面就可以进行数据统计了。

2,修改tomcat 日志格式


tomcat 日志格式:
https://tomcat.apache.org/tomcat-7.0-doc/api/org/apache/catalina/valves/AccessLogValve.html
还有中文日志格式:
http://www.cnblogs.com/chrischennx/p/6746214.html
写的很详细了。

直接修改成这个配置:

<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 %{X-Forwarded-For}i &quot;%{yyyy-MM-dd HH:mm:ss}t&quot; &quot;%r&quot; %{token}i %s %b" />
               <!-- default pattern="%h %l %u %t &quot;%r&quot; %s %b" />-->
      </Host>

直接把 head 头信息中的token 打印出来了,同时讲时间进行格式化。
变成 yyyy-MM-dd HH:mm:ss 方便处理了。可以直接处理了。

同时把 nginx 透传的 真实ip 也显示。
把日期增加 两个双引号 "%{yyyy-MM-dd HH:mm:ss}t" 方便pandas 读取。

测试:

curl http://localhost:8080/aabb -H "token: 222" 

然后就可以看到 token 已经增加到了 tomcat access 的log里面了。

3,读取日志


测试日志如下:

127.0.0.1 127.0.0.1 "2018-04-16 15:01:46" "GET /api/v1/user HTTP/1.1" 123344 200 110
127.0.0.1 127.0.0.1 "2018-04-16 15:01:47" "GET /api/v1/user/aa HTTP/1.1" 123344 200 110
127.0.0.1 127.0.0.1 "2018-04-16 15:01:48" "GET /api/v1/user/bb HTTP/1.1" 123355 200 110
127.0.0.1 127.0.0.1 "2018-04-16 15:01:40" "GET /api/v1/user/cc HTTP/1.1" 123366 200 110
127.0.0.1 127.0.0.1 "2018-04-16 15:02:46" "GET /api/v1/user HTTP/1.1" 123344 200 110
import pandas as pd
aa = pd.read_csv("/data/tomcat.log",sep=' ',names=['ip','realIp','time','url','token','status','bytes'])
>>> aa
          ip     realIp                 time                           url  \
0  127.0.0.1  127.0.0.1  2018-04-16 15:01:46     GET /api/v1/user HTTP/1.1   
1  127.0.0.1  127.0.0.1  2018-04-16 15:01:47  GET /api/v1/user/aa HTTP/1.1   
2  127.0.0.1  127.0.0.1  2018-04-16 15:01:48  GET /api/v1/user/bb HTTP/1.1   
3  127.0.0.1  127.0.0.1  2018-04-16 15:01:40  GET /api/v1/user/cc HTTP/1.1   
4  127.0.0.1  127.0.0.1  2018-04-16 15:02:46     GET /api/v1/user HTTP/1.1   

    token  status  bytes  
0  123344     200    110  
1  123344     200    110  
2  123355     200    110  
3  123366     200    110  
4  123344     200    110

然后就可以操作pandas 数据对象了。

参考:
http://pandas.pydata.org/pandas-docs/stable/io.html
http://blog.mmast.net/read-apache-access-log-pandas

4,总结


修改下了tomcat 日志,然后将日志文件作为 一个 csv 文件,
使用pandas 直接读取,然后就转换了。非常方便。
也不用找啥工具去处理日志了。非常方便。

本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/79960712

猜你喜欢

转载自blog.csdn.net/freewebsys/article/details/79960712
今日推荐