본문

WMS Client Logging Plug-in에 관하여

WMS Client Logging Plug-in에 관하여
윈도우즈 미디어 서비스는 로깅 플러그인으로 WMS Client Logging을 포함합니다. 이 플러그인은 WMS_EVENT_LOG와 WMS_EVENT_REMOTE_CACHE_LOG이벤트를 인지합니다. 서버가 로깅 이벤트를 지정된 배포지점(혹은 서버)에 호출할 때 이 플러그인은 XML 포맷의 로그 데이터를 읽어 들어온 후 이를 띄어쓰기로 구분되는 W3C 표준 로그를 텍스트 파일에 저장합니다. 이 텍스트 파일은 헤더와 로그의 두 필드로 구성됩니다.

Logging Plug-in의 기본 설정.
Log file path : %SystemRoot%\System32\LogFiles\WMS\<V>\WMS_<Y><m><d>.log
Log cycle period : Daily
Time format : Coordinated Universal Time (UTC)
Buffer : Buffers log entries
File format : Unicode characters (UTF-8)
Log format : Windows Media Services format
Request log entries from clients connected to the server : Selected by default
Request log entries from sessions played from the player cache or cache/proxy server : Not selected by default
Save player statistics : Selected by default
Save distribution server statistics : Selected by default
Filter player statistics with the Role attribute value : Not selected by default
Free space quote :  10, 이는 하드디스크에 남은 용량이 전체용량의 10%보다 적을 때 로깅을 멈춘다는 의미이다.
 
WMS Logging Plug-in 에서 참고해야 할 점
* 만약 Windows Media Services 4.1의 로그를 분석하기 위한 스크립트를 가지고 있다면, 이를 변경하여 Windows Media Services 9 혹은 그 이상의 버전에서의 로그를 분석하도록 수정할 수 있다.  변경사항으로는, # 기호로 시작되는 추가적인 헤더 라인이 추가되었는데, 이는 물론 무시할 수 있다. 그리고 또한 로깅에서의 각각의 라인은 44개의 필드에서 52개의 필드로 수가 변경되었다.

* 로깅 플러그인의 속성이나 이벤트 수신자를 객체 인터페이스나 MMC 스냅인으로부터 변경하고자 할때, 변경사항은 재활성화(비활성화 후 활성화 시키는)하기 전까지는 적용이 되지 않을것이다.

* 보안상의 이유로, Windows Media Server 9 혹은 그 이상의 버전을 구동하는 서버는 Administrator계정 대신 Network Service 계정에서 돌아갈 것이다. 그러므로 로깅 플러그인은 매핑된 드라이브에 로깅 기록을 저장할 수 없다. 하지만 원격지 컴퓨터에 로그를 저장하는데 있어 UNC 주소를 사용할 수 있다. 이를 위해서는 원격지에 있는 UNC 주소에 WMS 서버에 대해 쓰기 권한을 부여해야 한다. 그러면 \\RemoteComputerName\LogPath\WMS_<Y><m><d>.log 와 같은 주소를 사용할수 있을것이다. 물론 여기에서 <Y>는 4자리 년도를 나타내며 <m> 은 달, 그리고 <d> 는 일을 나타낸다. 예를들면 \\RemoteComputerName\LogPath\WMS_20030530.log 와같은 형태가 된다는 것이다. 더 많은 날짜 템플릿에대해서는 다음 페이지를 참조하라.

* 로그 파일의 기록 시점은 6개로 구분되어 있다. "시간당, 일별, 주별, 월별, 지정된 파일 사이즈에 도달할때까지, 한개의 파일만 사용하기.".  기본설정은 일별로(매일) 기록하는 것이다.

* 하드디스크에 로그를 저장하는데 있어 두가지 방법을 사용한다. "로그를 작성하기 전에 버퍼링 하기, 즉시 로그를 작성하기", 로깅 플러그인은 로그항목을 버퍼링 한 후 버퍼가 꽈 차게 될 경우 이를 기록한다. 로그를 버퍼링 하는것은 각각의 로그 항목이 생성될때마다 하드디스크에 이를 작성하지 않는다는 면에서 성능면에서 좋은 방식이다. 대신 로그는 버퍼가 꽉 차거나 일정 시간이 지난 경우에 디스크에 기록이 될 것이다. 하지만 서버가 심각한 오류에 처했을때 버퍼의 데이터들이 기록이 되지 않을 수 있다는 점에서는 좋지 않은 옵션이 될 수도 있다. 이 경우를 위해 로그를 받는 즉시 하드디스크에 저장하도록하는 옵션을 설정할 수 있다. 기본 설정은 버퍼를 사용하여 로깅하는 것이다.

* 로그 파일은 ANSI 를 사용하거나 UTF-8(Unicode)를 사용할 수 있다.만약 ANSI 포맷을 사용한다면 비ANSI 문자들은 기록이 죄지 않을것이다. 즉 ASCII(0-127)문자에 대해서는 ANSI나 UTF-8이나 둘 다 문제가 없지만 비ASCII(128-255) 문자에 대해서는 UTF-8이 적어도 2바이트를 사용하는 반면 ANSI가 1바이트만을 사용하기 떄문에 ANSI포맷이 문제가 될 수 있다. 기본 설정은 UTF-8으로 기록되는 것이므로 굳이 문자에 대해 걱정하지 않아도 될것이다.

* WMS Client Logging Plug-in은 오래된 포맷(Windows Media 4.1)으로 로그를 작성할 수도 있다. 이 모드를 사용하는 이유는 기존 Windows Media 4.1에서 사용하던 툴을 계속 이후버전을 위해서도 계속 사용하고 싶을 경우를 위함이다. 이 모드에서는 로깅 플러그인은 44개의 필드만 기록하며 다른 8개의 필드에 대해서는 기록을 하지 않을것이다. 그리고 날짜와 시간의 항목에 대해서, 스트림이 시작되는 시간대신 로그를 받아온 시점을 사용할것이다. 그리고 cs-uri-stem 항목에 대해서는 (cs-url항목과 마찬가지로)쿼리 부분을 포함한 전체 URL을 기록할것이다. 기본값은 이모드를 사용하지 않고 Windows Media ervices 9 Serieces format을 사용하는 것이다

* 객체 인터페이스 혹은 MMC 스냅인에서 로깅 플러그인의 로그 항목창을 사용함으로서 수신하고자 하는 이벤트를 지정할 수 있다. 만약 "서버에 연결된 클라이언트" 체크박스를 선택한다면, 서버는 WMS_EVENT_LOG 이벤트를 감지하고, 서버에 직접적으로 연결된 클라이이언트로부터 로그를 전달받게 된다. 기본적으로 사용하는 항목이다. 만약 "플레이어 캐ㅣ 또는 캐시/프록시 서버에서 재생된 세션" 항목을 체크한다면 WMS_EVENT_REMOTE_CACHE_LOG 이벤트를 감지하게 된다. 단 이는 기본적으로 설정된 항목이 아니다.



[그림 1] WMS 클라이언트 로깅 등록 정보 창의 로그 항목 탭.

* cs-mdia-role필드의 정보에 따라서 서버에서부터 받은 로그들을 필터링 할수도 있다. 예를들어 cs-media-role 값이 "Advertisement"일 경우에만 로그가 기록될 수 있도록 할 수 있다. cs-media-role값은 .wsx 파일이나 .asx파일에서 지정할 수 있으며, WIndows Media Player 9 이하의 버전에서는 asx파일에서 cs-media-role 항목을 지원하지 않는다. 이 필터링 옵션은 기본적으로 활성화 되어있지 않다.

* 플레이어 로그를 필터링 하는 것도 가능하다. 기본적으로 로깅 플러그인은 플레이어 로그를 기록한다. 하지만 만약 배포 서버를 위한 로그만을 사용하기 원한다면 플레이어 통계 체크박스를 해제하여 사용할 수 있다. 또한 배포 서버를 필터링 하는것도 가능하다. 이 설정은 기본적으로 사용안함으로 되어있는데, 이는 배포 서버 통계(WMS에 직접적으로 연결된 배포서버나 캐시/프록시 서버에 대해)가 수집된다는 것을 의미한다. 만약 배포 서버 통계 체크박스가 비어있다면, 배포 로그는 기록되지 않는다는것을 의미한다.



==========================
개인적으로 사용하던 WMS를 대중에게 공개하고자 준비하려 한다(라고 하고 1년이 지났지). 현재 누가 어떤 곡을듣고 있는가 하는것을 실시간으로 보여주기 위한 웹페이지를 asp.net으로 구현하려고 했는데(물론 더욱 개발이 간단해지지만) 차후 다른 로깅에 대해서도 재활용할수있도록 텍스트 파일 파싱기법으로 페이지를 구성하려고 한다.

이를 위해서는 위의 "Logging plug-in의 기본설정"란을 참고하면 좋다. 로깅 폴더를 웹 퍼블리싱 폴더쪽으로 돌려주면 웹쪽과 연동하기가 좋아진다. 아니면 가상 폴더를 사용하면 되지만 그게 더 번거로우니까. 그리고 매일 로깅하는것도 좋지만 쓸데없이 파일갯수 늘어나는게 싫으면 주간으로 바꿔주는것도 좋다. 시간 형식은 그냥 놔두는것이 좋고, 대신 버퍼 부분은 즉시 기록으로 바꾸어 주어야 한다. 당연한사실들을 너무 길게 늘여쓴 느낌이 나지만 이런게 오히려 좋을 때가 있다.

원문출처 : Windows Media Howto - Logging Model

댓글

Holic Spirit :: Tistory Edition

design by tokiidesu. powerd by kakao.