어플리케이션에서 발생하는 모든 예외를 한곳에서 로그처리를 하면 굉장히 편리한 경우가 많습니다.
개발자가 많아지거나 규모가 커지면 커질수록 예외처리를 하기가 쉽지않은데요..
아래의 코드를 이용해서 처리가 안된 예외를 자동으로 캐치해서 로그를 남겨줄수있습니다.
이렇게하면 알수없는 에러가 발생했을경우 로그가 남기때문에 수정하기가 쉬워지죠...
위의 코드로 처리되지않은 에러들이 각각 ApplicationInstance_Error와 CurrentDomain_UnhandledException 이벤트핸들러로 넘어오게됩니다.
그럼 필요한 코드를 집어넣어서 파일 또는 이벤트로그에 로그를 남기시면 에러가 발생했을경우 유저를 붙잡고 어떤 에러가 낳는지 캐물을 필요도 없게됩니다...ㅎ
저는 위의 코드를 별도로 개발한 범용로그컴퍼넌트에 붙여넣어서 Logger가 로딩되면 자동으로 어플리케이션에 붙히도록 해두었습니다.
개발자가 많아지거나 규모가 커지면 커질수록 예외처리를 하기가 쉽지않은데요..
아래의 코드를 이용해서 처리가 안된 예외를 자동으로 캐치해서 로그를 남겨줄수있습니다.
이렇게하면 알수없는 에러가 발생했을경우 로그가 남기때문에 수정하기가 쉬워지죠...
try
{
//여기서 예외가 발생안하면 웹어플리케이션
//ここで例外が発生しなかったらウェブアプリケーション
System.Web.HttpContext.Current.ApplicationInstance.Error += new EventHandler(ApplicationInstance_Error);
}
catch (Exception)
{
//윈도우 어플리케이션의 UnhandledException이벤트에 핸들러를 추가
//例外が発生したらウィンドウアプリケーション
System.AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
}
static void ApplicationInstance_Error(object sender, EventArgs e)
{
//로그를 남기는 처리를 집어넣기
//WriteLog("Exception発生!!!",System.Web.HttpContext.Current.Error.ToString(), LogLevel.Fatal);
}
{
//여기서 예외가 발생안하면 웹어플리케이션
//ここで例外が発生しなかったらウェブアプリケーション
System.Web.HttpContext.Current.ApplicationInstance.Error += new EventHandler(ApplicationInstance_Error);
}
catch (Exception)
{
//윈도우 어플리케이션의 UnhandledException이벤트에 핸들러를 추가
//例外が発生したらウィンドウアプリケーション
System.AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
}
static void ApplicationInstance_Error(object sender, EventArgs e)
{
//로그를 남기는 처리를 집어넣기
//WriteLog("Exception発生!!!",System.Web.HttpContext.Current.Error.ToString(), LogLevel.Fatal);
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
//로그를 남기는 처리를 집어넣기
//WriteLog("Exception発生!!!", e.ExceptionObject.ToString(), LogLevel.Fatal);
}
{
//로그를 남기는 처리를 집어넣기
//WriteLog("Exception発生!!!", e.ExceptionObject.ToString(), LogLevel.Fatal);
}
위의 코드로 처리되지않은 에러들이 각각 ApplicationInstance_Error와 CurrentDomain_UnhandledException 이벤트핸들러로 넘어오게됩니다.
그럼 필요한 코드를 집어넣어서 파일 또는 이벤트로그에 로그를 남기시면 에러가 발생했을경우 유저를 붙잡고 어떤 에러가 낳는지 캐물을 필요도 없게됩니다...ㅎ
저는 위의 코드를 별도로 개발한 범용로그컴퍼넌트에 붙여넣어서 Logger가 로딩되면 자동으로 어플리케이션에 붙히도록 해두었습니다.
'.Net' 카테고리의 다른 글
| 뮤텍스를 사용한 다중실행 방지(C#) (0) | 2009/02/12 |
|---|---|
| 六曜を取得する (0) | 2008/10/25 |
| 한방에 예외로그를 처리하기. (0) | 2008/10/22 |
| ClickOnce로 배포된 어플리케이션 버젼 취득. ClickOnce配布アプリのバージョン取得 (0) | 2008/09/30 |
| OTP솔루션 구축방법 (0) | 2008/05/20 |
| 진정한 웹다중Tier개발의 시작? VOLTA플랫폼 (0) | 2007/12/10 |
![]() |
![]() |
|
![]() |
![]() |
![]() |


Prev





Rss Feed