웹애플리케이션에서 오류 로그를 기록하는 간단한 방법을 소개 합니다.

본론내용

견고한 사이트를 구축하기위해서는 클라이언트 오류에 대한 로그 정보는 필수겠죠??


진행 순서는 다음과 같습니다.

1. web.config 에러페이지 redirect 추가및 커스텀에러페이지 작성.

2. global.asax 페이지의 Application_Error 이벤트에서 예외 오류 catch 후 로그 기록 함수 추가.

3. 에러로그 기록 함수 작성.


1. web.config 는 사이트의 기본 설정사항을 xml의 계층적 구조록 표현한 text 파일입니다.
여기서 지정된 값은 저장과 동시에 사이트 전역에 적용됩니다.
먼저 web.config 페이지에서 customErrors 항목을 아래와 같이 수정합니다. 만약 없다면 새로 추가합니다.
defaultRedirect 값은 이동할 페이지명을 지정합니다.


<configuration>

<system.web>

<customErrors mode="RemoteOnly" defaultRedirect="~/comm/CustomError.aspx"/>

</system.web>

</configuration>



다음은 리다렉트된 커스텀에러페이지 내용입니다.

CustomError.aspx

<%@ Page Language="C#" EnableSessionState="false" trace="false" %>

<html>

<head>

<link rel="stylesheet" type="text/css" href="/css.css">

<script language="javascript" src="/js/comm.js"></script>

</head>

<body>

<form runat="server">

<table width="950" cellpadding="0" cellspacing="0">

<tr>

<td width="900" height=200 valign=middle align="center" valign="top">

<table width=400 cellspacing=1 cellpadding=5 align=center class=title_bgcolor>

<tr>

<td class=forumAlternate align=center>

이 오류는 로그에 정상적으로 기록되어 졌습니다. <p/>

확인후 조치 하도록 하겠습니다.<p/>

- <a href="javascript:history.back()"><u>back</u></a>

</td>

</tr>

</table>

</td>

</tr>

</table>

</form>

</body>

</html>




2. global.asax 페이지는 웹애플리케이션의 이벤트 설정을 지정하는 페이지 입니다.

global.asax 페이지의 Application_Error 이벤트에 아래와 같이 로그기록 함수를 추가합니다.


<%@ Application Language="C#" %>

<script language="C#" runat="server">

void Application_Error(Object sender, EventArgs E)

{

Exception ex = Server.GetLastError().GetBaseException();

string errString = "MESSAGE: " + ex.Message +

"<br>SOURCE: " + ex.Source +

"<br>FORM: " + Request.Form.ToString() +

"<br>QUERYSTRING: " + Request.QueryString.ToString() +

"<br>TARGETSITE: " + ex.TargetSite +

"<br>STACKTRACE: " + ex.StackTrace;

Goby.Utils.Common.CreateErrorLog(errString);

}

</script>



3. CreateErrorLog() 함수 작성.
CreateErrorLog() 함수는 에러 문자열을 받아 로그를 남기는 함수입니다.
이 함수는 스트림 클래스를 사용하여 텍스트 파일로도 저장 가능합니다.

다음은 윈도우 이벤트로그에 메세지를 추가하는 구문입니다.
EventLog 클래스를 사용하기 위해서는 먼저 System.Diagnostics 네임스페이스가 참조 되어야 합니다.


using System.Diagnostics;

.

.

public static void CreateErrorLog(string errorMessage)

{

EventLog.WriteEntry("GOBY WEB.SITE", errorMessage, EventLogEntryType.Error);

}


Posted by 퓨전마법사
,