spring boot Tomcat访问日志

 

 

1.Tomcat设置访问日志

复制代码
 1 <Host name="localhost"  appBase="webapps"
 2             unpackWARs="true" autoDeploy="true">
 3         <!--
 4         <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
 5                prefix="localhost_access_log." suffix=".txt"
 6                pattern="%h %l %u %t &quot;%r&quot; %s %b" />
 7         -->
 8         <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
 9                prefix="localhost_access_log." suffix=".txt"
10                pattern="%h,%l,%u,%t,%T,&quot;%r&quot;,%s,%b,%{Referer}i,&quot;%{User-Agent}i&quot;,%{X-Requested-With}i" 
11                fileDateFormat="yyyy-MM-dd.HH"
12                />
13 
14       </Host>
复制代码

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

复制代码
 1 #内嵌tomcat日志
 2 server.tomcat.accesslog.buffered=true
 3 server.tomcat.accesslog.directory=/usr/microStorage/tomcatLog
 4 server.tomcat.accesslog.enabled=true
 5 #每天保存一个
 6 server.tomcat.accesslog.file-date-format=yyyy-MM-dd
 7 server.tomcat.accesslog.pattern=%h %l %T %t %r %s %b %{Referer}i %{User-Agent}i
 8 server.tomcat.accesslog.prefix=access_log
 9 server.tomcat.accesslog.rename-on-rotate=false
10 server.tomcat.accesslog.request-attributes-enabled=false
11 server.tomcat.accesslog.rotate=true
12 server.tomcat.accesslog.suffix=.log
复制代码

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

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

 

posted @   低调的小白  阅读(9126)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示