본문 바로가기

개 발코딩

[c#] 웹 구축시 Log4net 설정하기

먼저 web.config 파일의 <configuration>안에 아래의 내용을 추가한다.


<configSections>         <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <log4net>     <appender name="DebugAppender" type="log4net.Appender.DebugAppender">       <layout type="log4net.Layout.PatternLayout">          <conversionPattern value="[ %date ] [%thread] [ %level ] %logger : &quot;%message&quot; - %exception%newline" />          <IgnoresException value="False" />       </layout>     </appender>     <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">         <layout type="log4net.Layout.PatternLayout">           <conversionPattern value="%date{dd.MM.yyyy HH:mm:ss.ffff} [%thread] %level %logger%exception - %message%newline"/>         </layout>       </appender>       <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">         <file value="logs/log.txt" />         <appendToFile value="true" />         <rollingStyle value="Date" />         <datePattern value="yyyy-MM"/>         <!--<maxSizeRollBackups value="10" />-->         <maximumFileSize value="250KB" />         <staticLogFileName value="true" />         <layout type="log4net.Layout.PatternLayout">           <conversionPattern value="[ %date ] [%thread] [ %-5level ] %logger : &quot;%message&quot; - %exception%newline" />           <IgnoresException value="False" />         </layout>       </appender>

<root>

<level value="DEBUG" />

<appender-ref ref="DebugAppender" />

<appender-ref ref="ConsoleAppender" />

<appender-ref ref="RollingFileAppender" />

</root> 

</log4net>


위에 DebugAppender는 VisualStudio에서 immediate window에 로그를 남기는 기능을 한다.

RollingFileAppender는 로그 파일을 파일에 쓴다.

rollingStyle을 Date로 하고 yyyyMMdd와 같이 쓰면 매일 새로운 로그파일이 생성되고 위와 같이 yyyyMM까지만 작성시에는 매월마다 파일이 작성된다.

root 아래에 level을 value를 변경하여 로그 레벨을 설정할 수 있다. 

레벨은 ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF 이렇게 있다.


다음으로 Global.asax 파일의 namespace 윗부분에 아래와 같은 assembly attribute를 추가한다. 

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

사실 Global.asax가 아닌 다른 파일에 넣어도 상관은 없다.

assembly attribute에 대해 더 알고 싶으면, 나름 간단하게 잘 쓰여진 블로그를 아래 링크하니 참고 바란다.

로그를 실소에 사용할 때는 아래 같이 작성한다.

readonly ILog logger = LogManager.GetLogger(typeof(클래스명));          public void Execute(IJobExecutionContext context)         {             ...             try             {

logger.Debug("this is debug");                 ....             }             catch (Exception ex)   

{

    logger.Error("this is error ", ex);

     return;

}

}

클래스 내에 ILog 인스턴스를 생성하고, 그 아래에서 사용하면 된다.