如果你公司服务器上跑的是java的代码,那多半会使用tomcat,而tomcat出现问题我们就需要去查看tomcat的日志。tomcat有一个日志叫做catalina.out,它记录了tomcat相关的信息,包括正确的和错误的。该案例的需求背景是这样的:
服务器上跑着4个tomcat实例,目录结构如下:
复制代码
1
2
3
4
5
6/opt/TOMCAT/crontabs /opt/TOMCAT/t1 /opt/TOMCAT/t2 /opt/TOMCAT/t3 /opt/TOMCAT/t4
而catalina.out所在路径如下:
复制代码
1
2
3
4
5/opt/TOMCAT/t1/logs/catalina.out /opt/TOMCAT/t2/logs/catalina.out /opt/TOMCAT/t3/logs/catalina.out /opt/TOMCAT/t4/logs/catalina.out
具体需求如下:
复制代码
1
2
3
4
5
6
7
81)脚本可以取Tomcat实例t1-t4的日志,通过参数指定是哪一个; 2)脚本可以自定义取日志的起始位置和结束位置,比如取今天早上10点之后到现在的日志,要求提供的时间为24小时制; 3)第一个参数为哪一个tomcat(t1、t2、t3、t4),第二个参数为起始时间点(只考虑当天的时间),第三个参数为结束时间点,可省略,若忽略则为当前时间点; 4)提供的时间点需要判断是否符合要求,即必须为17:10:04这样的格式。
日志片段如下:
复制代码
1
2
3
4
5
6
7Oct 29, 2018 01:52:24 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["http-bio-8080"] Oct 29, 2018 01:52:24 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["ajp-bio-8080"] Oct 29, 2018 01:52:24 PM org.apache.catalina.startup.Catalina start INFO: Server startup in 2102 ms
参考脚本如下:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78#!/bin/bash #截取指定Tomcat的日志片段 LANG=en logfile="/opt/TOMCAT/$1/logs/catalina.out" d_mdy=`date "+%b %d,%Y"` if [ $# -ne 2 ] && [ $# -ne 3 ] then echo "你提供的参数个数不对,请提供2个或者3个参数。例如,sh $0 t1 08:01:00 10:51:30" exit 1 fi if ! echo $1 |grep -qE '^t1$|^t2$|^t3$|^t4$' then echo "第一个参数必须是t1、t2、t3或t4" exit 1 fi judge_time() { date -d "$1" +%s &>/dev/null if [ $? -ne 0 ] then echo "你提供的时间$1格式不正确" exit 1 fi } judge_time_in_log() { if ! grep -q "$d_mdy $(tr_24_12 $1)" $logfile then echo "你提供的时间$1在日志$logfile中没有出现,请更换时间点" exit 1 fi } tr_24_12() #将24小时制转换为12小时制 { date -d "$1" +%r } judge_time $2 judge_time_in_log $2 if [ $# -eq 3 ] then judge_time $3 t1=`date -d "$2" +%s` t2=`date -d "$3" +%s` if [ $t2 -lt $t1 ] then echo "你提供的时间$2比$3晚,应该把早的时间放在前面" exit 1 fi judge_time_in_log $3 fi #取起始时间所在行行号 begin_n=`grep -n "$d_mdy $(tr_24_12 $2)" $logfile |head -1 |awk -F ':' '{print $1}'` if [ $# -eq 3 ] then #取结束时间所在行行号 n=`grep -n "$d_mdy $(tr_24_12 $3)" $logfile |tail -1 |awk -F ':' '{print $1}'` #结束时间所在行的下一行为日志内容,用sed截取 end_n=$[$n+1] sed -n "$begin_n,$end_n"p $logfile else sed -n "$begin_n,$"p $logfile #截取从起始位置到最后位置的日志内容 fi
最后
以上就是幸福高跟鞋最近收集整理的关于16. 分析Tomcat日志的全部内容,更多相关16.内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复