IT_Programming/ASP.NET (WEB)

C# 으로 asp.net 에러 로그 남기기

JJun ™ 2006. 3. 21. 16:33

아래 문서 참고 할것

 

http://support.microsoft.com/default.aspx?scid=kb;en-us;306355

 

 

웹사이트에서 어떤오류가 나는지 항상 보고 받고 싶을때.

 

-------------------

<script language=C# runat="server">
void Page_Load(object sender, System.EventArgs e)
{
throw(new ArgumentNullException());
}

public void Page_Error(object sender,EventArgs e)
{
Exception objErr = Server.GetLastError().GetBaseException();
string err = "<b>Error Caught in Page_Error event</b><hr><br>" +
"<br><b>Error in: </b>" + Request.Url.ToString() +
"<br><b>Error Message: </b>" + objErr.Message.ToString()+
"<br><b>Stack Trace:</b><br>" +
                  objErr.StackTrace.ToString();
Response.Write(err.ToString());
Server.ClearError();
}
</script>

---------------------------

 

다음 소스를 실행해보세요.

코드 비하인드로 실행시는

 

다음과 같이 이벤트를 추가 해야합니다.

 

private void InitializeComponent()
{    
this.Load += new System.EventHandler(this.Page_Load);

this.Error += new System.EventHandler(this.Page_Error);

}

 

 

페이지 마다 실행하는게 매우 귀찮타면..

 

global.asax 에 Application_Error 서 실행합니다.

protected void Application_Error(Object sender, EventArgs e)
{

Exception objErr = Server.GetLastError().GetBaseException();
string err = "<b>Error Caught in Page_Error event</b><hr><br>" +
"<br><b>Error in: </b>" + Request.Url.ToString() +
"<br><b>Error Message: </b>" + objErr.Message.ToString()+
"<br><b>Stack Trace:</b><br>" +
                  objErr.StackTrace.ToString();
Response.Write(err.ToString());
Server.ClearError();
}

 

응용하여 text 파일의 로그파일을 생성하게 하든지. 관리자에게 해당 오류를 메일로 발송하던지.

특정페이지로 이동하여 유저에게 적절한 메시지를 뿌려주게도 할수 있습니다.