dev/asp.net, c#

[asp.net] 웹사이트 Application_Error 에러(Exception)로깅 with log4net

코딩for 2020. 11. 18. 17:03
반응형

웹사이트의 문제가 발생하지 않는 것이 가장 베스트지만 이유 불문하여 알 수 없는 오류,  실수, 잘못된 코딩 등으로 오류가 발생하는 것은 어찌 보면 필연적입니다.  이러한 오류를 캐치하여 오류가 발생할 당시의 데이터의 확인 및 필요시 대응을 하기 위해서 로깅은 합니다.

로깅하는 방법은 필요한 곳에서 직접 로깅하는 등 여러 가지가 있으나 아래 예제는 애플리케이션에서 global.asax 파일의 Application_Error에서 log4net 를 이용한 Exception 로깅 및 처리 방법입니다. http Status 404, 500 등 Application Error 가 발생을 하게 되면 파일에 로깅(및 메일링)을 하도록 합니다.

 

[asp.net core 로깅 구현 다른글]

[asp.net core 3.1] 파일 로깅 시스템 for SeriLog (세리로그)

[asp.net core 3.1] 파일 로깅 시스템 for nLog(엔로그)

[asp.net core 3.1] 파일 로깅 시스템 for log4net(로그4넷)

 


먼저 nuget package 에서 log4net 패키지 참조

//Global.asax.cs
protected void Application_Error(object sender, EventArgs e)
{
	// Exception 객체 정보를 가져와서 기록을 하게 된다.
	Exception ex = Server.GetLastError();

	// 서비스 에러 발생시 로깅 및 메일링 프로세스 작성
	ILog log = LogManager.GetLogger("RollingError");
	log.Fatal(ex.StackTrace + "\r\n");    
    
    // 에러 발생시 공통 에러 페이지로 리다이렉트
    Response.Redirect("/Exception.aspx", false);
}

 

 

//web.config 
// configuration 에 log4net 관련 세팅 추가

<configuration>

    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
    </configSections>        
        
	<log4net>
		<appender name="RollingErrorLogFileAppender" type="log4net.Appender.RollingFileAppender">
      		<param name="File" value="D:\Log\Error\" />
      		<param name="RollingStyle" value="Date" />
      		<param name="DatePattern" value="yyyy-MM-dd.'log'" />
      		<param name="AppendToFile" value="true" />
      		<param name="StaticLogFileName" value="false" />	
      		<layout type="log4net.Layout.PatternLayout">
          		<param name="ConversionPattern" value="%d [%t] %5p (%C:%M:%L) - %m%n" />
      		</layout>
		</appender>
		<logger name = "RollingError">
      		<level value="All" />
      	<appender-ref ref="RollingErrorLogFileAppender" />
		</logger>
	</log4net>
    
<configuration>    

 

닷넷 관련 로깅 모듈도 다양해지면서 log4net > Nlog > Serilog  등으로 많이 바뀌어 가고 있네요.

 

 

* log4net 참고 : https://logging.apache.org/log4net/ 

 

Apache log4net – Apache log4net: Home - Apache log4net

What is Apache log4net™ The Apache log4net library is a tool to help the programmer output log statements to a variety of output targets. log4net is a port of the excellent Apache log4j™ framework to the Microsoft® .NET runtime. We have kept the frame

logging.apache.org

 

반응형