반응형

.Net 환경에서 로깅 처리를 할 수 있는 log4net 사용법 입니다.

1.Visual Studio의 NuGet 패키지 관리에서 log4net을 검색 하여 설치 합니다.

2. 설치가 완료되면 참조에 log4net이 추가 됩니다.

3. 구성 파일을 신규로 작성하여 추가 합니다.

<?xml version="1.0" encoding="utf-8"?>

<log4net>
  <root>
    <level value="ALL" />
    <appender-ref ref="RollingFileAppender" />
  </root>
  <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <!--<file type="log4net.Util.PatternString" value="log-%property{processid}-%date{yyyy-MM-dd}.txt" />-->
    <file value="Log\common.log" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="5" />
    <maximumFileSize value="10MB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
    </layout>
  </appender>
</log4net>

구성파일에 대한 자세한 작성법은 여기를 참조 합니다.

4. 구성파일은 프로그램 배포시 별도의 파일로 존재할 수도 있지만 여기서는 어셈블리에 포함 시키기 위하여 속성창에서 빌드 작업을 '포함 리소스'로 지정 합니다.

5. 이제 로그를 남기기 원하는 곳에서 실제로 로그 처리를 합니다.

namespace log4net_test
{
    internal class Program
    {
        private static readonly ILog log = LogManager.GetLogger(typeof(Program));

        static void Main(string[] args)
        {
            var assembly = typeof(Program).Assembly;
            using (var stream = assembly.GetManifestResourceStream("log4net_test.config.log4net.config"))
            {
                log4net.Config.XmlConfigurator.Configure(stream);
            }

            log.Info("Application started");
            Console.WriteLine("Press Enter to exit");
            Console.ReadLine();
            log.Info("Application ended");
        }
    }
}

여기서 GetManifestResourceStream() 메소드의 인자값으로 포함 리소스로된 구성파일을 전달 합니다. 예제의 경우 config 폴더를 만들어서 그 아래에 구성파일을 두었기 때문에 폴더명을 '.' 을 이용하여 위와 같이 namespace와 파일명 사이에 넣어 줘야 합니다.

빌드 후 프로그램을 실행 시켜보면 구성파일에서 지정한 로그 파일인 Log\common_log 가 생성되고 로그가 남게 됩니다.

 

반응형

+ Recent posts