今天线上遇到一个bug无法解决,于是去查Log,发现Thinkphp的Log设置的全开,很详细。
但是里面掺杂着很多无用的信息,于是需要写个脚本提取下,也为了日后高效处理日志。

脚本如下:

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
#!/bin/bash
read -p "Enter Filename: " filename
read -p "Enter Output Filename: " outputfilename
awk 'BEGIN{
linestart=1;
lineend=0;
iserr=0;
total=0;
}
{
arr[NR]=$0;
if($0 ~/ERR/){
iserr=1;
}
if($9 ~/^###/){
lineend=NR-1;
if(lineend!=0){
if(iserr==1){
for(i=linestart;i<=lineend;i++){
print arr[i];
delete arr[i];
}
print "";
total++;
iserr=0;
} else {
for(i=linestart;i<=lineend;i++){
delete arr[i];
}
}
linestart=NR;
}
}
}
END{
if(iserr==1){
for(i=linestart;i<=NR;i++){
print arr[i];
delete arr[i];
}
print "";
total++;
} else {
for(i=linestart;i<=NR;i++){
delete arr[i];
}
}
print "Total ERR:",total;
}' $filename > $outputfilename

样例数据:

点击这里下载样例数据