컴퓨터활용/프로프레임

[프로프레임] 서비스로그 추출 쉘

멜번초이 2017. 7. 30. 13:42
반응형

개발자들이 거래를 하고 바로 로그를 보기 위해서 로그파일을 tail 걸곤 한다. 좀 더 쉽게 해당 거래 로그만 추출하여 볼 수 있다면 편할 수 있다.  아래 스크립트를 응용하여 자기에게 맞게 편집하여 사용하면 편하게 볼 수 있지 않을까 싶다.

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
# 서비스명을 입력하지 않으면 입력요청 
if [ $# -lt 1 ];then
  echo "Which Service ?? \c"
  read SVC
else 
  SVC=$1
fi
 
CHK=`echo $SVC | cut -c1`
 
# 입력받은 서비스명이 tmconfig 에 존재하는 지 확인하고 서버명을 구함    
if [ $CHK = 's' -o $CHK = 'S' ];then
  
  SVR_CNT=`grep -i $SVC $TMAXDIR/config/tmconfig.m |grep -v ^# | wc -l |awk '{print $1}'`
  
  if [ $SVR_CNT -eq 1 ];then
     SVR=`grep -i $SVC $TMAXDIR/config/tmconfig.m |grep -v ^# | awk '{print $4}'`
  elif [ $SVR_CNT -gt 1 ];then
     echo "$SVC NOT UNIQUE"
     exit
  elif [ $SVR_CNT -eq 0 ];then  
     echo "$SVC NOT FOUND"
     exit 
  fi
else 
  echo "$SVC Service name is not valid"
  exit
fi
 
# 로그파일 찾기
LOGFILE=$PFMLOGROOT/onlog/`date "+%m%d%Y"`/$SVR.log
if [ ! -f $LOGFILE ];then
  echo "$LOGFILE NOT EXIST!"
  exit 
fi
 
# 글로벌ID 찾기 
GID=`tail -1000 $LOGFILE | grep -i $SVC | tail -1|cut -d: -f2`
if [ "$GID" = "" ];then
  echo "Not found Service log in $LOGFILE"
  exit 
else 
  echo "Found Global ID = $GID  Do you want to view log? \c"
  read key 
fi
 
# 추출한 로그파일을 연다 
grep $GID $LOGFILE > ~/temp.log
vi ~/temp.log 
 
# 보기를 마치면 파일을 삭제 (굳이 삭제하지 않아도 될 듯)
rm -f ~/temp.log
cs

[위의 쉘은 IBM AIX 에 최적화된 소스이다]

17라인 : Tmax 의 config 파일명은 프로젝트에 따라 다를 수 있다.

38 라인 : 끝에서 1000라인 중에서 해당 서비스의 로그를 찾은 뒤 가장 나중의 라인에서 글로벌ID를 추출한다. 운영서버와 같이 거래가 다량 발생하게 된다면 끝 1000 라인에서 찾을 수 없다. 반대로 거래가 거의 없는 로그파일이라면 끝 100 라인 정도에서만 찾아봐도 해당 거래를 찾아 낼 수 있을 것이다. 프로프레임에서 로그파일은 : 문자로 구분되는데 처음에 두번째 구분값이 글로벌ID이다.

43 라인 : 로그파일을 보기 싫으면 이 단계에서 Ctrl-C 를 눌러서 스크립트를 중단할 수 있다.

48 라인 : 추출한 로그파일을 본인의 홈 디렉토리에 추출하도록 한다. 다른 곳에 임의로 생성하게 되면 서로 중복되거나 파일명을 다르게 할 경우 많은 파일들이 생성되어 혼란이 생길 수도 있기 때문이다. 

 

 

반응형