ASP용 로그 기록 클래스

많은 개발자들이 개발을 하면서 중간 중간 소스에 Response.Write 변수 를 추가 합니다.

이유는 디버깅 용이죠! ^^

하지만, 개발 완료 후 삭제도 해야 하고 혹여나 깜빡하고서 누락하는 경우가 있는데요.

누락한 것 중 지저분 해지기만 하고 문제가 되진 않지만 어떤 사람들은 dB 커넥션 문자열을 찍어서

노출이 되는 경우도 있기도 합니다. ㅎㅎㅎ

공개 소스 중에는 Log4J라는 모듈이 있습니다만, 이건 JSP, Ruby, .Net 용으로만 있고 ASP용은 없지요.

그래서 아쉬운 대로 만들어 봤습니다.

제가 생각했을 때 이 클래스를 사용하므로서 얻을 수 있는 이득을 나열해 보죠.


1. 운영 중에도 에러나 기타 정보를 기록하여 디버깅 및 유지보수에 용의합니다.
2. 실수로 중요 정보가 외부에 노출되는 것을 방지합니다. (예: Response.Write에 의해)
3. 확장 함수를 이용하여 받아들인 파라미터 등을 기록하는 것이 가능합니다.
4. 로그 레벨을 이용 하여 기록 기준을 정의 할 수 있으므로 성능이 나빠지는 것에 대응 할 수 있습니다.
5. 파일에 기록이 되므로 언제든 역 추적이 가능합니다. ( 1번과 비슷 한 내용이네요 ^^ )

다음은 사용 예입니다.

<!--#include virtual="ClsLogger.asp"//-->
<%On Error Resume Next%>
<%
'// Logger
Dim oLog : Set oLog = New ClsLogger

'// Request Log
TraceRequestParameter oLog

'//      FATAL : 치명적 에러
oLog.Fetal "치명적 에러!!! 관리자 빨리 보삼. : " & Err.Description

'//      ERROR : 수행 가능한 정도의 에러
oLog.Error "또 에러냐!!! : " & Err.Description

'//      WARN : 문제를 일으킬 가능성의 정보
oLog.Warn "이건 귀찮아서 처릴 안했단 말이오!!! : "

'//      INFO : 정보를 나타낼 때 사용
oLog.Info "게시판 목록 시작"

'//      DEBUG : 상세 정보를 나타낼 때 사용
oLog.Debug "지금은 개발 중..."

If ( Err.Number = 0 ) Then
   oLog.Debug "완료"
Else
   oLog.Error Err.Description
End If


'------------------------------------------------------------------------------------
'// Request 객체의 파라미터 값을 로그에 기록한다.
'// 이 함수는 ClsLogger에 포함 시킬지 말지 고민중 ... ㅠㅠ
'------------------------------------------------------------------------------------
Sub TraceRequestParameter(ByRef pLog)

   On Error Resume Next

   Dim pContentType : pContentType = LTrim(Request.ServerVariables("CONTENT_TYPE"))

   If ( InStr(pContentType, "multipart/form-data") > 0 ) Then
      Exit Sub
   End If

   If ( Not IsObject(pLog) ) Then
      Exit Sub
   End If

   Dim z
   Dim pKeyName
   pLog.Debug "============= FORM PARAMETER ============="
   For z = 1 To Request.Form.Count
      pKeyName = Request.Form.Key(z)
      pLog.Debug "Dim " & pKeyName & " : " & pKeyName & " = RequestForm(""" &
pKeyName & """)"
   Next

   For z = 1 To Request.Form.Count
      pLog.Debug Request.Form.Key(z) & " : " & Request.Form(z)
   Next

   pLog.Debug "========== QUERYSTRING PARAMETER ========="
   For z = 1 To Request.QueryString.Count
      pKeyName = Request.QueryString.Key(z)
      pLog.Debug "Dim " & pKeyName & " : " & pKeyName & " = RequestQuery(""" &
pKeyName & """)"
   Next

   For z = 1 To Request.QueryString.Count
      pLog.Debug Request.QueryString.Key(z) & " : " & Request.QueryString(z)
   Next  
   pLog.Debug "=========================================="

   Err.Clear

   On Error GoTo 0

End Sub
%>

저의 경우 주로 .Error와 .Debug를 사용합니다.

일단 속는 셈 치고 한번 사용해보셔요. ^^

많은 분들이 자기가 원하던 거라고 하시더군요. 다행 다행.

아 그리고 로그뷰어는 "mtail" 이라는 프로그램을 이용합니다. 네이년에서 mtail로 검색을 하시면 쉽게 구 할 수 있어요.

간단하게 소개하면
   기록되는 로그를 실시간으로 모니터링 할 수 있고,
   필터링도 가능합니다. 이 필터링을 이용하면 Error만 볼수도 있고 Debug만 볼수도 있습니다.

유용한 프로그램이에요 ^^
 
그럼 사용해보시고 부족한 부분은 리플 달아주세요~
2009/04/27 19:43 2009/04/27 19:43

Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다