카테고리 없음 2013. 5. 2. 17:18

서비스를 하다보면 특정 로그를 검사하여 원하는 개발자에게 메일 또는 폰으로 알려주는 기능이 필요할때가 있다. (외부라이브러리 및 소스가 없는경우도 유용함)

구현을 위해 필요한 요소를 다음과 같이 써본다.

1.config.xml 기본셋팅정보

2.이미 알림을 발생한것은 다시 알리지 않기위해 리스트 관리

3.리스트 갱신이 쉽도록 오토 업데이트 기능 (서버가 많으면 패치도 일임)


1.config.xml 기본셋팅정보

mailto : 특정로그가 발견되면 알려줄 사람의 메일

 <_list>

    <CheckListItem>

      <_Path>d:\del\test</_Path> // 특정 위치

      <_FileName>*.*</_FileName>// 특정 파일명

      <_FindString></_FindString> // 파일안에 포함된 문자

    </CheckListItem>


처음 서비스를 설치하고 실행을 하면 주기적으로 config.xml 의 정보에서 모니터링할 파일들을 가져와 검색을 한다 . 특정 로그가 발견되면 해당 mailto 에게 메일을 보낸다.


2.이미 알림을 발생한것은 다시 알리지 않기위해 리스트 관리


findlist.xml 정보

<?xml version="1.0" encoding="utf-8"?>

<FindList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

// 마지막 체크한 시간

  <_CheckedLastTime>2013-05-02T16:59:10.3128617+09:00</_CheckedLastTime>

// 마지막 업데이트한 시간 

  <_UpdateTime>2013-05-02T16:59:40.3074334+09:00</_UpdateTime>

  <_list>

    <FindListItem>

      <_FilePath>d:\del\test7\새 텍스트 문서.log</_FilePath>

      <_LastWriteTime>2013-05-02T16:54:15.1939819+09:00</_LastWriteTime>

      <_FindString>Line[1] : sdfdfaaaaaaaaabcff</_FindString>

    </FindListItem>

  </_list>

</FindList>


3.리스트 갱신이 쉽도록 오토 업데이트 기능 (서버가 많으면 패치도 일임)

서비스를 하다보면 모니터링 할 로그 정보가 추가가 된다. 자동갱신 기능이 필요하다.

서비스가 실행되면 셋팅된 주기값으로 AutoUpdate.bat 를 실행하고 자신의 프로세스는 종료한다.

AutoUpdate.bat 는 패치서버에서 최신을 바일을  받고 다시 로그모니터링 프로세스를 실행한다.

다음은 AutoUpdate.bat 기본적인 내용이다.


모니터 프로세스->autoUpdate.bat 실행 ->모니터프로세스 종료 -> autoupdate.bat 이 패치를 받고 모니터 프로세스 다시 실행


timeout 5  // 모니터 프로세스 죽는걸 기다림(더 깜삼하게 처리해줄수도 있을듯)

start patchser update  // 패치 시작 , 패치가 실패할수도 있어 독립적으로 실행시킴

timeout 5 // 패치를 대략기다림 (더 깔삼하게 처리해줄수도 있을듯)

net start LogChecker // 모니터 프로세스 다시 시작







posted by perpet
: