1、Tomcat设置访问日志

      <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" />
-->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h,%l,%u,%t,%T,&quot;%r&quot;,%s,%b,%{Referer}i,&quot;%{User-Agent}i&quot;,%{X-Requested-With}i"
fileDateFormat="yyyy-MM-dd.HH"
/> </Host>

在pattern中每个的含义,我参考的是 https://blog.csdn.net/yaerfeng/article/details/40340981

2、springboot设置访问日志,在配置文件中添加tomcat日志配置

#tomcat访问日志
server.tomcat.accesslog.directory=d:/logs
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.prefix=localhost_access_log.
server.tomcat.accesslog.suffix=.txt
server.tomcat.accesslog.pattern=%h,%l,%u,%t,%T,"%r",%s,%b,%{Referer}i,"%{User-Agent}i",%{X-Requested-With}i,%{passport}c
server.tomcat.accesslog.file-date-format=yyyy-MM-dd

我是添加到application.properties中的

3、日志分析,通过正在表达式,将需要分析的信息进行正则捕获提取,然后根据需要进行相关数据的统计及可视化展示

    public static void parse() throws Exception{
String path = "D:/logs/localhost_access_log.2018-09-30.11.txt";
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path)));
String line = null;
String reg = "^(.+?),(.+?),(.+?),(.+?),(.+?),(\\\".+?\\\"),(.+?),(.+?),(.+?),(\\\".+?\\\"),(.+?),(.+?)$";
Pattern pattern = Pattern.compile(reg);
while((line=br.readLine())!=null) {
System.out.println(line);
Matcher matcher = pattern.matcher(line);
matcher.matches();
// pattern="%h,%l,%u,%t,%T,&quot;%r&quot;,%s,%b,%{Referer}i,&quot;%{User-Agent}i&quot;,%{X-Requested-With}i,%{passport}c"
System.out.println("ip="+matcher.group(1));
System.out.println("date="+matcher.group(4));
System.out.println("cost="+matcher.group(5));
System.out.println("request="+matcher.group(6));
System.out.println("status="+matcher.group(7));
System.out.println("bytes="+matcher.group(8));
System.out.println("Referer="+matcher.group(9));
System.out.println("User-Agent="+matcher.group(10));
System.out.println("X-Requested-With="+matcher.group(11));
System.out.println("passport="+matcher.group(12));
System.out.println("------------------------------------");
}
br.close();
}

最新文章

  1. PHP 高级编程(1/5) - 编码规范及文档编写
  2. OleDB Destination 用法
  3. phpstorm取消自动保存,修改快捷键并标识修改的文件为星星标记
  4. 算法与设计模式系列1之Python实现常见算法
  5. thrift 学习
  6. requirejs解决异步模块加载方案
  7. 当标签上写了runat=&quot;server&quot; 后,&lt;%%&gt;就会无效
  8. for循环嵌套的穷举,迭代,以及while的使用和for的转换
  9. rsync+inotify-tools文件实时同步
  10. HDU 4334 Trouble
  11. TCP/IP 相关知识点与面试题集
  12. vue.js权威指南 PDF
  13. V4l2的结构体 --- ioctl【转】
  14. js执行函数报错Cannot set property &#39;value&#39; of null怎么解决?
  15. java爬虫,爬取当当网数据
  16. JS 数组去重的几种方式
  17. cxgrid 非编辑状态下复制当前列的值 真折腾人
  18. python 实现快速排序
  19. [译]the cost of javascript in 2018(1)
  20. linux-nc命令介绍

热门文章

  1. vs code解决golang开发环境问题 dial tcp 216.239.37.1:443: connectex: A connection attempt failed
  2. springBoot的事物管理
  3. 苹果手机上点击WEUI日期控件不容易点中
  4. nginx静态资源反向代理
  5. Javaweb学习笔记——(十七)——————JDBC的原理、四大核心类、四大参数、预编译、Dao模式、批处理、大数据、时间类型的转换
  6. GCC编译器原理(三)------编译原理三:编译过程(2-1)---编译之词法分析
  7. ubuntu安装matplotlib一些坑
  8. [机器学习笔记]奇异值分解SVD简介及其在推荐系统中的简单应用
  9. LinkedStack的底层实现
  10. python操作Excel-写/改/读