옛날엔 winzapper를 이용해서 특정 이벤트 로그를 지워버리는 방법이 있었지만, 말 그대로 옛날 얘기(..) 원하는 정보만 골라서 쏙 빼버릴 수는 없을까?
로그 필터링 기능을 이용해보자. 그러나 기본 제공되는 기능은 헤더 영역에 대한 필터링만 가능하기 때문에 데이터 영역, 즉 주요 메시지에 대한 필터링이 어렵다.
로그 헤더 |
로그 데이터 |
'누가, 어디서, 무엇을' 했는지 등의 정보를 필터링 하려면 XML 구조 검색을 가능하게 해주는 XPath 쿼리문을 작성해야 한다.
쿼리문 추가 전 |
다음은 '로그온에 실패(EventID=4625)한 특정 사용자'만을 검색해주는 XPath 쿼리문.
쿼리문 추가 후 |
표현식은 트리 구조를 이루는 전체 노드(필드) 경로와 검색하려는 최종 노드의 값을 입력하는 방식. 이때 노드 이름은 대소문자를 구분, 값은 구분하지 않는다.
*[System/EventID=4625]
*[상위노드/하위노드=노드값]
'속성'이 존재하는 노드는 '@'로 노드와 속성을 구분 후, 해당 속성과 값을 별도 []로 구분해야 함.
*[EventData/Data[@Name='TargetUserName']='속성값']
*[상위노드/하위노드[@노드속성='속성이름']='속성값']
이제 원래 목적대로 전체 로그에서 원하는 정보를 제외시켜 보자. 방법은 간단하다. 부정(!=) 연산자를 이용하면 됨.
이후엔 필터링 결과를 다른 이름으로 저장하면 끝.
XPath 2.0은 정규표현식까지 지원하지만, 윈도우 이벤트 로그는 XPath 1.0을 제한적으로 지원하기 때문에 와일드카드 검색도 안 된다. 그래도 이거라도 되는 게 어디냐 싶음.
'속성'이 존재하는 노드는 '@'로 노드와 속성을 구분 후, 해당 속성과 값을 별도 []로 구분해야 함.
*[EventData/Data[@Name='TargetUserName']='속성값']
*[상위노드/하위노드[@노드속성='속성이름']='속성값']
이제 원래 목적대로 전체 로그에서 원하는 정보를 제외시켜 보자. 방법은 간단하다. 부정(!=) 연산자를 이용하면 됨.
이후엔 필터링 결과를 다른 이름으로 저장하면 끝.
XPath 2.0은 정규표현식까지 지원하지만, 윈도우 이벤트 로그는 XPath 1.0을 제한적으로 지원하기 때문에 와일드카드 검색도 안 된다. 그래도 이거라도 되는 게 어디냐 싶음.
관련 글
댓글 없음:
댓글 쓰기