ASP.NET 1.0 에서도 몇가지 밖엔 기록을 하지 않습니다만, ASP.NET 2.0 에서 거의 대부분의 예외에 대해서 이벤트로그에 기록을 해줍니다.
그러나 그런 오류는 시스템에 다소 위험도가 높은 몇가지 스크립트 오류를 기록하는데요, 다음 메타베이스 설정값 변경을 통해서 보다 많은 오류를 이벤트로그에 기록할수 있습니다.
물론, IIS 로그파일에서 오류가 난 페이지를 추출할수 있습니다. 이미 사용을 많이 하는 관리자들이 있는데요, 바로 로그파서 입니다.
로그파서에 대한 내용은 http://www.serverinfo.pe.kr/TipnTech.aspx?Seq=284 포스트를 참고해보시구요.
위와 같은 로그파서는 명령창 기반인것과, SQL 쿼리와 같은 쿼리 명령어도 알고 있어야 합니다. 그래서 손쉽게 오류가 발생한 내역만 볼수 있는 방법이 이벤트로그에 오류로그를 기록하는 것입니다.
물론 웹서버에서 오류가 많이 난다면 그리 추천할만한 방법은 아닙니다.^^ IIS 로그파일은 순차로깅 방식이라 로그파일 기록에 따른 리소스 부담이 적은 편이나, 이벤트로그에 기록하는 것은 그 보다는 몇배 이상의 리소스를 소모한 다는 것입니다.
그럼 메타베이스 값중 어떤것을 설정해 줘야 하는지 알아 보도록 하죠.^^
이벤트로그를 남기기 위해서는 두가지 키에 대해서 설정을 해줘야 하는데요. AspErrorsToNTLog 와 AspLogsErrorRequests 입니다.
AspErrorsToNTLog 속성은 Windows 이벤트 로그에 기록할 ASP 오류를 지정합니다. 기본적으로 ASP 오류는 클라이언트 브라우저와 IIS 로그 파일에 기록됩니다.
AspLogErrorRequests 메타베이스 속성
AspLogErrorRequests 속성은 웹 서버에서 Windows 이벤트 로그의 응용 프로그램 섹션에 ASP 오류를 기록하는지 여부를 제어합니다. ASP 오류는 기본적으로 클라이언트 브라우저와 IIS 로그 파일에 기록됩니다.
위 2가지 값은 서로 다음과 상관관계가 있습니다.
- | AspLogErrorRequests가 FALSE로 설정되어 있는 경우 AspErrorsToNTLog 값에 관계없이 ASP 오류가 Windows 이벤트 로그에 기록되지 않습니다. |
- | AspLogErrorRequests가 TRUE로 설정되어 있고 IIS에서 IIS 로그 파일에 항목을 기록할 수 없는 경우 AspErrorsToNTLog 값에 관계없이 항목이 Windows 이벤트 로그에 경고로 기록됩니다. |
- | AspLogErrorRequests가 TRUE로 설정되어 있고 AspErrorsToNTLog가 FALSE로 설정되어 있는 경우 심각한 ASP 오류만 Windows 이벤트 로그에 전달됩니다. 심각한 ASP 오류는 번호 100, 101, 102, 103, 104, 105, 106, 107, 115, 190, 191, 192, 193, 194, 240, 241 및 242입니다. |
- | AspLogErrorRequests가 TRUE로 설정되어 있고 AspErrorsToNTLog가 TRUE로 설정되어 있는 경우 모든 ASP 오류가 Windows 이벤트 로그에 기록됩니다. |
위 2개의 값 설정은 메타베이스 익스플로러나, adsutil.vbs 을 이용해서 설정하면 됩니다.
adsutil set W3SVC/AspErrorsToNTLog true
adsutil set W3SVC/AspLogErrorRequests true
Vbscript 는 다음과 같습니다.
Set IIsWebVirtualDirObj = GetObject("IIS://localhost/W3SVC/1/Root")
IIsWebVirtualDirObj.AspErrorsToNTLog = true
IIsWebVirtualDirObj.Put "AspLogErrorRequests", true
IIsWebVirtualDirObj.SetInfo
ASP 0100
메모리 부족
필요한 메모리를 할당할 수 없습니다.
ASP 0101
예기치 않은 오류
함수가 (exception name)을 반환했습니다.
ASP 0102
문자열 입력 필요
함수에 문자열을 입력해야 합니다.
ASP 0103
정수 입력 필요
함수에 정수를 입력해야 합니다.
ASP 0104
허용되지 않는 작업
허용되지 않는 작업
ASP 0105
범위를 벗어난 인덱스
배열 인덱스가 범위를 벗어났습니다.
ASP 0106
형식 불일치
처리할 수 없는 데이터 형식이 있습니다.
ASP 0107
스택 오버플로
처리 중인 데이터가 허용된 한계를 벗어났습니다.
ASP 0115
예기치 않은 오류
외부 개체에 트랩 가능한 오류 (exception name)이 발생했습니다. 스크립트를 계속 실행할 수 없습니다.
ASP 0190
예기치 않은 오류
외부 개체를 해제하는 동안 트랩 가능한 오류가 발생했습니다.
ASP 0191
예기치 않은 오류
외부 개체의 OnStartPage 메서드에 트랩 가능한 오류가 발생했습니다.
ASP 0192
예기치 않은 오류
외부 개체의 OnEndPage 메서드에 트랩 가능한 오류가 발생했습니다.
ASP 0193
OnStartPage 실패
외부 개체의 OnStartPage 메서드에 오류가 발생했습니다.
ASP 0194
OnEndPage 실패
외부 개체의 OnEndPage 메서드에 오류가 발생했습니다.
ASP 0240
스크립트 엔진 예외
스크립트 엔진에서 (object name)의 (exception name) 예외를 (object name)으로부터 내보냈습니다.
ASP 0241
CreateObject 예외
(object name)의 CreateObject에서 (exception name) 예외가 발생했습니다.
ASP 0242
OnStartPage 인터페이스 쿼리 예외
개체의 (object name) OnStartPage 또는 OnEndPage 메서드를 쿼리하는 동안 (exception name) 예외가 발생했습니다.
그러면,. 위 값이 적용되지 않았을 때에는 500 에러는 이벤트로그에 기록되지 않고 IIS 로그에만 기록되었습니다. 두개의 값을 True 했을때 500 내부서버 오류가 나면 어떻게 될까요?
<% response.write "ok %> 인 경우
<% response.write "ok > 인 경우
http://www.microsoft.com/technet/prodtechnol/windowsserver2003/ko/library/iis/
cde669f1-5714-4159-af95-f334251c8cbd.mspx
07-eventlog-2.png
07-eventlog-1.png
07-eventlog-3.png
07-eventlog-4.png
07-Microsoft_TechNet.gif
댓글 없음:
댓글 쓰기